htaccess非www到www并删除子域名www

时间:2013-08-19 18:05:42

标签: .htaccess mod-rewrite

所以我在htaccess中有以下重写代码

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/” 有谁知道为什么?

1 个答案:

答案 0 :(得分:0)

您的问题中没有任何规则将请求路由到子域的文件夹。如果/sub/最初不在请求中,则RewriteCond %{HTTP_HOST} ([^\.]*)\.domain\.com$ [NC] RewriteRule (.*) /%1/$1 [L] 不应该在那里。

也就是说,所有重定向规则都需要才能任何路由规则。路由规则是内部将请求路由到其他URI的内容,例如:

/sub/

该规则的内部路由指向与子域名相同的文件夹。如果此规则在重定向之前,则会应用这两个规则,并且重定向的URI将变为http://。您需要在> 重定向规则后放置路由规则,例如:所有具有R或{{1}}标志的规则。