0

所以我的 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' 可以找到。如果我 goto www.sub.domain.com,它会重定向到“ sub.domain.com/sub/”有人知道为什么吗?

4

1 回答 1

0

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

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

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

该规则内部路由到与子域命名相同的文件夹。如果此规则在重定向之前,则两个规则都将被应用,并且重定向的 URI 变为/sub/. 您需要将您的路由规则放在重定向规则之后,例如所有具有http://R标志的规则。

于 2013-08-19T18:22:13.420 回答