我要疯了 Apache完全忽略了RewriteCond和RewriteRule 。 我期望这个错误,因为RewriteEngine尚未设置为On 。 我有一堆其他RewriteCond和RewriteRule线,工作正常,当我检查重写日志(我已经启用),它显示这两个被跳过。 我修剪了一切,以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]