2014-01-29 146 views
2

我在我的服务器上运行多个顶级域名,我试图将它们全部从非www重定向到www,这工作得很好,但有一些例外我需要修复。301重定向问题与子域

问题一是一个通用的代码,运行良好,除了子域也被重定向,这也不会发生。这里是代码:

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

如果我可以管理这一个不重定向的子域,这将是一个完美的解决方案。

我也试过这一个,这是一个更多的代码,因此不太好,它不重定向的子域。但是,还有一个问题:url samplefolder/folder2/index.html被重定向到www.sample.com而不是www.sample.com/folder/folder2/index.html

这是验证码:

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

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

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

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

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

我如何能解决第一种方法,因此不会忽略子域,如sub.sample.com请求并重定向到www版本的所有请求,包括像sample.com/网址的想法文件夹/ folder2/index.html到www.sample.com/folder/folder2/index.html?

+0

+1,这是一个非常好的问题。不要担心你在其他地方收到的苛刻语气 - 通常不会那么尖锐! – halfer

回答

1

不知道为什么第二件事是发生在所有。使用您的代码,当我请求时:sample.com/folder/folder2/index.html,我被重定向到www.sample.com/folder/folder2/index.html。你确定没有其他的htaccess文件或者index.html正在做什么吗?

对于第一个问题,请尝试:

RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+\.([a-z]){2,3}(?:\.[a-z]{2}|))$ [NC] 
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301] 
+0

这适用于子域问题。另一个问题仍然没有解决,但也许你是对的,我有另一个htaccess文件的地方。这是一个非常复杂的脚本,所以我需要一些时间来解决这个问题。非常感谢fol帮助我solvinf子域问题!好东西 :) – Ben

1

您可以使用此规则,以避免增加www到子域名:

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

这不仅适用于简单域名(xyz +单级顶级域名),如yourDomain.com吗? –

+0

OP想要避开子域名。这不会匹配'sub.domain.com' – anubhava

+0

我想到域名,如http://whizzo.co.uk/。它不会得到一个万维网。 –