在我的Ubuntu开发机器上运行LAMP堆栈。对于我工作的每个网站,我在root下创建一个新目录:
/var/www/somesite.com
/var/www/anothersite.com
我遇到的问题是apache不允许跨这些文件夹重复重写规则。例如,如果我设置了这个:
RewriteRule ^ track /(.*)$ /somesite.com/order_track.php [nc,L]
http://localhost/somesite.com/track/abc123
- 按意图工作
同样的声明不适用于anothersite.com
RewriteRule ^ track /(.*)$/anothersite.com/order_track.php [nc,L]
http://localhost/anothersite.com/track/abc123
- Apache返回404。
清除浏览器缓存并重新启动Apache无效。 Apache似乎“记住”第一个使用的rewriterule。这发生在我的所有计算机上(家庭,工作,笔记本电脑)
编辑:我应该提到我在每个目录中都有一个htaccess文件。 root / var / www不包含htaccess文件。每个目录的htaccess都应该独立运行。但他们没有。
答案 0 :(得分:0)
您可以在/somesite.com/.htaccess
:
RewriteEngine On
RewriteBase /somesite.com/
RewriteRule ^track/(.*)$ order_track.php [NC,L]
然后在/anothersite.com/.htaccess
:
RewriteEngine On
RewriteBase /anothersite.com/
RewriteRule ^track/(.*)$ order_track.php [NC,L]
答案 1 :(得分:0)
RewriteCond %{HTTP_HOST} ^(?:www\.)?(somesite\.com|anothersite\.com)$
RewriteRule ^track/ /%1/order_track.php [NC,L]
如果不需要,你不需要(。*)来抓住这个。