2012-02-01 39 views
1

我有一些网站使用相同的文件但不同的模板运行,我的目标是强制使用所有的www或非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] 

得到它从其他问题上计算器:)

但是,如果使用WWW域一切正常,如果没有得到这个重定向

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

回答

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] 
+0

得到服务器错误...不清楚是什么问题在此阻止RewriteCond%{HTTPS}!= on RewriteCond%{HTTP_HOST}!^ www \。 [NC] 重写规则^ HTTP:!//www.% {HTTP_HOST}%{REQUEST_URI} [R = 301,L] 的RewriteCond%{HTTPS} =上 的RewriteCond%{HTTP_HOST} ^万维网\。 [NC] RewriteRule^https://www.% {HTTP_HOST}%{REQUEST_URI} [R = 301,L] – 2012-02-01 14:58:51

+0

其实我的不好,在'%{REQUEST_URI}'之前有一个空格字符。我编辑它,请再试一次。 – anubhava 2012-02-01 15:06:08

+0

太好了,谢谢,我该如何排除一些要重定向的子域名?像admin.domain.com – 2012-02-01 18:45:42

相关问题