特定于域的重写规则也与其他域匹配

时间:2013-10-09 13:42:41

标签: apache .htaccess mod-rewrite url-rewriting

我在服务器中托管了几个域,并且我有一个类似于此的.htaccess文件:

# FIRST.COM
RewriteCond %{HTTP_HOST} !^www\.first\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.first\.com$ [NC]
RewriteCond %{REQUEST_URI} !index\.php  [NC]
RewriteRule ^(.*)$ /index.php?q=%2  [L,QSA,NC]

# there are some more rules for first.com here ...

# SECOND.COM
RewriteCond %{HTTP_HOST} !^www\.second\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.second\.com$ [NC]
RewriteCond %{REQUEST_URI} !index\.php  [NC]
RewriteRule ^(.*)$ /index.php?q=%2  [L,QSA,NC]

# there are some more rules for second.com here ...

# THIRD.COM
RewriteCond %{HTTP_HOST} !^www\.third\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.third\.com$ [NC]
RewriteCond %{REQUEST_URI} !index\.php  [NC]
RewriteRule ^(.*)$ /index.php?q=%2  [L,QSA,NC]

基本上所有域都指向一个脚本,但是它们的重写规则略有不同。

我现在只是添加了third.com规则,并且我意识到所有网站(即使那些.htaccess文件中没有任何重写规则)现在都要转到third.com。

third.com规则正好位于.htaccess文件的底部,如果删除它们,以上所有规则都可以正常工作。第一个和第二个域有很多规则,它们都可以正常运行,但是当我添加这四行时,没有任何内容可以匹配任何规则,所有请求都匹配third.com规则。

有人知道我应该如何调试它?

提前致谢。

0 个答案:

没有答案