将 example.com/* 重定向至 www.example.com/*

将 example.com/* 重定向至 www.example.com/*

我刚刚搬到了一家新主机,他们的控制面板和我以前用的不一样。在我的旧主机上,所有 domain.com/* 地址都被 301 重定向到万维网。example.com/*,无需我进行任何配置,我正尝试在我当前的主机上重现这一点。

经过一番搜索,我找到了以下 .htaccess 代码,我将其放在我的网站的根 .htaccess 文件中:

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

这样做是将所有 example.com/* 页面重定向到 www.example.com/*,除了当我访问 example.com/forum 时。如果我通过访问 www.example.com/forum 来访问我的论坛,由于某种原因,它会被重定向到 example.com/forum(没有 www)。以前没有这样做过。

因此我所做的就是将上述代码的修改版本放在我的论坛的 .htaccess 文件(位于 /forum)的顶部,唯一的区别是在最后一行添加了“/forum”:

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

这可行,但我只是想知道我是否以“正确的方式”来做到这一点,或者还有其他更好的方式?

答案1

我在 docroot 的 .htaccess 中使用的规则

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

答案2

根目录中只需要一个 .htaccess:

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

答案3

您的 .htaccess 文件中还有其他重写规则吗?如果有,请将您显示的前 3 行放在其他重写规则上方。

当我这样做时,example.com/xyz 重定向到 www.example.com/xyz。

我的 .htaccess 文件位于我的 webroot(Ubuntu Lucid 上的 /var/ww)。

相关内容