下面的情况是可能的,我如何将它归档到共享主机环境中?
我有一个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文件夹。
我很想知道它是否适用于您的应用程序…希望它带给你更多。