当我使用foo.org时,无法触发RewriteCond%{HTTP_HOST}。 它似乎忽略它,但www.foo.org和sub.foo.org似乎触发重写条件。 我可能错过了一些简单的东西,并希望有一些更有经验的眼睛能够帮助。
<VirtualHost *:80> ServerName foo.org ServerAlias sub.foo.org www.foo.org DocumentRoot /var/www/ RewriteEngine On RewriteCond %{HTTP_HOST} ^www.foo.org$ RewriteRule ^/(.*)$ http://sub.foo.org/$1 [L,R]
我试过这3个设置(replace上面的)
RewriteCond %{HTTP_HOST} ^www.foo.org$ RewriteRule ^/(.*)$ http://sub.foo.org/$1 [L,R] # WORKS :) RewriteCond %{HTTP_HOST} ^sub.foo.org$ RewriteRule ^/(.*)$ http://www.foo.org/$1 [L,R] # WORKS :) RewriteCond %{HTTP_HOST} ^foo.org$ RewriteRule ^/(.*)$ http://sub.foo.org/$1 [L,R] # DOESN'T WORK!!!
这对我来说真是令人沮丧,因为它看起来很简单,但我无法弄清楚。 有没有人有任何想法? 所有的DNS条目设置(我可以直接从浏览器访问所有这些网站,只是redirect被打破)。
更新 :在启用网站的位置启用了另一个虚拟主机。 禁用后,一切似乎工作。 我真的不明白为什么,但我认为,其他虚拟主机的设置正在使用foo.com进入时,因此Apache没有find任何RewriteRules。
尝试使用以下指令启用mod_rewritedebugging。
RewriteLog
RewriteLogLevel
从3级开始,向我们展示结果。 也请添加你的apache版本。