根文件夹之外的文件夹和 URL 重写

根文件夹之外的文件夹和 URL 重写

以下情况是否可能?如何在共享托管环境中存档它?

我有一个 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 文件夹。

我很好奇它是否适用于您的应用程序...希望它能为您带来更多帮助。

相关内容