www到非www重定向问题

时间:2012-12-14 21:37:06

标签: .htaccess mod-rewrite redirect

我已经想出如何将我的所有网页从 example.com 转移到 www.example.com ,但我发现的任何代码都无法正常工作恰恰相反。我需要从 www.example.com 转到 example.com

这是我的代码。有人可以帮我重写它,以便它反过来吗?我做的任何编辑都是404或无限循环。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/?(.*) http://www.%{HTTP_HOST}/ [L,R=301,NE] 

- - - - - - - - 编辑

Options +MultiViews
RewriteEngine On
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^/?(.*) http://%1/$1 [L,R=301,NE]

-----编辑2 -----

RewriteEngine On
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^/?(.*) http://%1/$1 [L,R=301,NE]

Options +MultiViews

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^ /%1.php [L]

我选择了Options +MultiViews,因为你给我的是Options -MultiViews,它总是把我带到“未找到,这里是类似的文件”页面。

1 个答案:

答案 0 :(得分:0)

尝试:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^/?(.*) http://%1/$1 [L,R=301,NE] 

编辑:

为避免与mod_negotiation冲突,请尝试在上述规则之后添加此

Options -MultiViews

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^ /%1.php [L]