将URL重写为非www多个站点

时间:2012-02-01 14:16:13

标签: regex .htaccess mod-rewrite

我有一些他们使用相同文件但不同模板运行的网站,我的目标是强制使用所有www或非www域。

这是我的代码:

RewriteCond %{HTTPS} (on)?
RewriteCond %{HTTP:Host} ^(?!www\.)(.+)$ [NC]
RewriteCond %{REQUEST_URI} (.+)
RewriteCond %{HTTP:Host} ^[^.]+\.[a-z]{2,5}$ [NC]
RewriteRule .? http(?%1s)://www.%2%3 [R=301,L]

从stackoverflow上的其他问题中获取它:)

但是,如果我使用www域,一切正常,如果没有获得此重定向

http://domain.de/www/htdocs/user/_production/http%28?s%29://www.

1 个答案:

答案 0 :(得分:1)

为什么不简化这样的规则:

Options +FollowSymLinks -MultiViews
RewriteEngine on

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

RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]