Apache忽略RewriteCond和RewriteRule

我要疯了 Apache完全忽略了RewriteCondRewriteRule 。 我期望这个错误,因为RewriteEngine尚未设置为On 。 我有一堆其他RewriteCondRewriteRule线,工作正常,当我检查重写日志(我已经启用),它显示这两个被跳过。 我修剪了一切,以validation它没有造成这个问题,果然,Apache愉快地进行这个configuration的错误:

 DocumentRoot /var/sites/public <Directory /var/sites/public> AllowOverride None SetEnv APPLICATION_ENV production RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://www.example.com/$1 [L,R] Order allow,deny allow from all </Directory> 

我敢肯定,这里有一些明显的错误,我瞎了眼,盯着它太久了。 任何帮助,将不胜感激。

注意:我没有这个在Vhost中。 configuration中没有任何Vhosts。 我已经删除了RewriteCond,它仍然不会抛出任何错误。 我也用RewriteEngine On试了一下。

只是简单地看看它,告诉我RewriteCond不会匹配任何东西,除了看起来什么都没有。 不知道如何mod_rewrite感觉。

你到底在做什么?

例如,如果您希望它匹配(www。)example.com的任何域名并将其转发到www.example.com,那么您将拥有如下规则:

 RewriteCond %{HTTP_HOST} !^(www.)?example\.com$ RewriteRule (.*) http://www.example.com/$1 [R,L] 

你也想要这个:

 RewriteCond %{HTTP_HOST} . 

…或以不同的方式写下来:

 RewriteCond %{HTTP_HOST}!="" 

所以:

 RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} !^(www.)?example\.com$ RewriteRule (.*) http://www.example.com/$1 [R,L]