2013-08-19 97 views
0

所以,我有我的htaccess的htaccess的非www会www和删除子域名WWW

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

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

运行完美重定向非www到www我的域的以下重写代码。

我有一个子域名,我们称之为'sub.domain.com',它可以找到。如果我转到www.sub.domain.com,它会重定向到'sub.domain.com/sub/' 任何人有一个想法为什么?

+0

什么坏了?至于预期的行为是什么? –

+0

我想有另一个rewriterule在内部重写你的子域到正确的目录。重定向使这可见。将你的规则与'^%1 /(.*)$'匹配起来,它应该像你期望的那样工作。 – Sumurai8

+0

@ Sumurai8它不重定向,www.sub.domain.com - > sub.domain.com –

回答

0

您的问题中没有任何规则将请求路由到子域的文件夹。如果它最初不在请求中,则/sub/不应该在那里。

也就是说,你所有的重定向规则都需要之前的任何路由规则。路由规则是东西,内部请求路由到其它的URI,例如:

RewriteCond %{HTTP_HOST} ([^\.]*)\.domain\.com$ [NC] 
RewriteRule (.*) /%1/$1 [L] 

该规则internall路线到一个名为同样的事情,子域文件夹。如果此规则在之前为重定向,则将应用这两个规则,并且重定向的URI将变为/sub/。您需要在之后将您的路由规则放置在之后,例如您的重定向规则。具有http://R标志的所有规则。