Apache实现带www到不带www域名301跳转

从www.abc.com跳转至abc.com首先需要实现两个域名指向相同IP(不同IP也可以,只是一般都是同一个), 域名设置方法见我前面的文章。然后在apache的 www.abc.com的 VirtualHost中使用一下重定向规则

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

该规则还有一个效果就是将带斜杠的域名和不带斜杠的域名跳转为同一个,具体不同浏览器效果不同,IE比较特殊,会自动跳转到带斜杠的,firefox、chrome都是跳转到不带斜杠,原因不详。

如果你的需求是从abc.com跳转到www.abc.com,正好和我相反,在abc.com的VirtualHost配置文件中使用以下规则

RewriteEngine On
RewriteCond %{HTTP_HOST} ^abc.com [NC]
RewriteRule ^(.*)$ http://www.abc.org$1 [L,R=301]

以上规则也可以写在 .htaccess 文件