使用RewriteEngine删除www时重定向循环

时间:2014-01-13 19:38:44

标签: .htaccess mod-rewrite redirect apache2 virtualhost

注意:我已经看到了重定向www->非www的其他问题/答案。更多的是要知道为什么这不起作用

所以我有一个看起来大致像这样的VirtualHost文件

<VirtualHost *:80>
    ServerName domain.com
    ServerAlias www.domain.com
    ...
    RewriteEngine on
    RewriteCond %{HTTP_HOST} www.(.+) [NC]
    RewriteRule ^/(.*) http://%{SERVER_NAME}/$1 [R=301]
    ...
</VirtualHost>

但是当我尝试它时,我不断获得重定向循环。我没有看到任何告诉我它在访问日志中重定向的内容

我怀疑它一直错误地访问www.domain.com而不是domain.com,即使我确定这应该是正确的......

1 个答案:

答案 0 :(得分:1)

尝试此规则:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

由于使用%{SERVER_NAME}变量,您可能会进入循环。