以下情况是否可能?如何在共享托管环境中存档它?
我有一个 Wordpress 安装,位于,例如,
/httpdocs/wordpress
我的域名指向此文件夹。因此调用
http://example.com
结果出现在 Wordpress 页面中。现在我想添加第二个系统。但我不想污染我的 Wordpress,想把它存储在这个文件夹之外。我仍然希望它可以通过
http://example.com/other-system
即使它位于文件系统中
/httpdocs/other-system
并不是
/httpdocs/wordpress/other-system
这可能吗?我说得有道理吗?谢谢!
答案1
我认为你想要的是
Alias /other-system /httpdocs/other-system
看别名.在 .htaccess 中,你可以使用
RewriteEngine on
RewriteRule ^/other-system/(.*) /httpdocs/other-system/$1 [QSA]
答案2
据我所知,您不能使用 .htaccess 文件中的 RewriteRule 来脱离您的 DocumentRoot,因为这个 DocumentRoot 总是会被添加到重写 URL 的开头。
我建议将每个应用程序放在 DocumentRoot 下的单独文件夹中。例如,使用 DocRoot/wordpress 和 DocRoot/other。
现在如果你想要像
www.example.com => wordpress app
www.example.com/other => the other-system app
并且还希望将类似的 URLwww.example.com/wordpress
重定向到www.example.com
,那么您可以在 .htaccess 文件中使用类似以下内容:
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} !=""
RewriteRule . - [L]
RewriteCond %{REQUEST_URI} ^/other/(.*)?$
RewriteRule . - [L]
RewriteBase /
RewriteCond %{REQUEST_URI} ^/wordpress/.*$
RewriteRule ^wordpress/(.*)$ $1 [R=301,L]
RewriteCond %{REQUEST_URI} !^/wordpress/.*$
RewriteRule ^(.*)$ /wordpress/$1 [L]
第二条重写规则与其他应用程序匹配,它不执行任何操作,只是将其设置为本次传递中的最后一次重写。
第三次重写将永久重定向从 example.com/wordpress 到 example.com。
现在第一条规则也不会执行任何操作,但如果重定向在之前的传递中设置为某个值,它就会停止。这避免了无限重定向循环。
最后一次重写将所有内容内部重定向到 wordpress 文件夹。浏览器中的 URL 保留,但不包含 wordpress 文件夹。
我很好奇它是否适用于您的应用程序...希望它能为您带来更多帮助。