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

下面的情况是可能的,我如何将它归档到共享主机环境中?

我有一个Wordpress安装驻留在,比如说,

/httpdocs/wordpress 

我的网域指向这个文件夹。 所以打电话

 http://example.com 

导致Wordpress页面。 现在我想添加第二个系统。 但我不想污染我的Wordpress,并希望将其存储在此文件夹之外。 我仍然希望它可以通过

 http://example.com/other-system 

即使它驻留在文件系统中

 /httpdocs/other-system 

并不是

 /httpdocs/wordpress/other-system 

那可能吗? 我有什么意义吗? 谢谢!

我想你想要的是

 Alias /other-system /httpdocs/other-system 

请参阅别名 。 在.htaccess中,可以使用

 RewriteEngine on RewriteRule ^/other-system/(.*) /httpdocs/other-system/$1 [QSA] 

据我所知,你不能在.htaccess文件中使用RewriteRule从你的DocumentRoot中出来,因为这个DocumentRoot总是被添加到重写的URL的开头。

我build议将每个应用程序放在DocumentRoot下的一个单独的文件夹中。 例如,使用DocRoot / wordpress和DocRoot / other。

现在,如果你想要漂亮的url

 www.example.com => wordpress app 

www.example.com/other => the other-system app

也希望像www.example.com/wordpress这样的url被redirect到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永久redirect到example.com。

现在第一条规则什么都不做,但是如果redirect被设置为通过之前的事情,它会停止。 这避免了无限的redirect循环。

最后一次重写将内部redirect到wordpress文件夹。 浏览器中的url保持不存在wordpress文件夹。

我很想知道它是否适用于您的应用程序…希望它带给你更多。