使用htaccess将请求从非www重定向到www(但有一个扭曲)

时间:2009-11-27 15:12:08

标签: .htaccess

我目前正在使用htaccess强制所有请求使用www。所以:

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

将example.com/page重定向到www.example.com/page。

但是,这个htaccess文件正在被example.com的几个国际版本使用。我想要的代码也可以执行以下操作:

example.de/page - > www.example.de/page 和 example.co.uk/page - > www.example.co.uk/page 等

可能有几十个版本的example.com,所以我希望每次添加新国家时都要记得编辑htaccess。

3 个答案:

答案 0 :(得分:2)

您可以在您的子站中使用服务器变量,因此这应该可以使用

RewriteRule ^(.*)$ http://www.${HTTP_HOST}/$1 [L,R=301]

答案 1 :(得分:1)

对:认为我实际上已经破解了。 (或者至少看起来它有效):

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

似乎可以解决问题。

答案 2 :(得分:0)

测试当前主机名是否以www.开头,如果缺少则添加它:

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]