如何使用mod_rewrite将example.com重定向到www.example.com?

时间:2009-07-04 22:27:08

标签: apache .htaccess mod-rewrite

我需要重定向任何没有“www”的网址。到“www。”的网址为了更好的搜索引擎优化。我读到mod_rewrite和.htaccess文件可以实现这一点,但我不知道使用正确的代码。有人可以帮忙吗?

5 个答案:

答案 0 :(得分:7)

在根文件夹中创建一个名为.htaccess的文件(例如,index.html或index.php所在的文件夹)。将以下内容放入其中:

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

答案 1 :(得分:1)

在Apache的URL Rewriting Guide中有一个很好的例子。

以下代码会将任何非www请求重定向到www请求:

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

您希望将其放在.htaccess文件的<Directory>指令或apache配置文件中。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

要从您的网址中删除www,请在.htaccess

上使用此代码
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

要在您的网站上强制使用www,请在.htaccess上使用此代码

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^YourSite.com$
RewriteRule ^(.*)$ http://www.yourSite.com/$1 [R=301]
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule ^(([^/]+/)*[^./]+)$ /$1.html [R=301,L]

“你的网站”必须替换你的网址。

答案 4 :(得分:0)

除了使用mob_rewrite,您还可以使用虚拟主机指令

执行此操作
<VirtualHost example.com>
   ServerName example.com
   Redirect permanent / http://www.example.com
</VirtualHost>

我通常以相反的方式去除无关的'www'。