所以我在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/
”
有谁知道为什么?
答案 0 :(得分:0)
您的问题中没有任何规则将请求路由到子域的文件夹。如果/sub/
最初不在请求中,则RewriteCond %{HTTP_HOST} ([^\.]*)\.domain\.com$ [NC]
RewriteRule (.*) /%1/$1 [L]
不应该在那里。
也就是说,所有重定向规则都需要才能任何路由规则。路由规则是内部将请求路由到其他URI的内容,例如:
/sub/
该规则的内部路由指向与子域名相同的文件夹。如果此规则在重定向之前,则会应用这两个规则,并且重定向的URI将变为http://
。您需要在>> 重定向规则后放置路由规则,例如:所有具有R
或{{1}}标志的规则。