1

假设我们有一个域 root.com 我在 htaccess 中添加了这些行以将非 www 重定向到 www :

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

我还有一个子域:demo.root.com 所以我在子目录 root/demo 中添加了一个 htaccess 并添加了一些行来将子目录重定向到子域以避免直接访问子目录使用 root.com/demo 或 www.root.com/demo 这里是添加的代码:

RewriteCond %{http_host} ^root.com [nc]
RewriteRule ^(.*)$ http://www.root.com/$1 [L,R=301]
RedirectMatch 301 ^/demo/(.*)$ http://demo.root.com/$1

现在结果是:

  • 将非www重定向到主域root.com的www
  • 重定向子目录 /root/demo 到子域 demo.root.com

问题是 :

使用这个 url: root.com/demo (非 www 版本)不会将我重定向到 demo.root.com ,可能是因为有两个重定向:

  • 从非 www 到 www
  • 从子目录到子域

看来这个组合是行不通的

我想要的是 ?

的组合 :

  • 能够将主域从非 www 重定向到 www 而不会在子域中出现问题
  • 将子目录重定向到子域
4

1 回答 1

0

将这两个规则都保留在 main 中DOCUMENT_ROOT/.htaccess

RewriteRule ^demo(/.*|)$ http://demo.root.com$1 [R=301,L,NC]

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

从 中删除现有规则demo/.htaccess

于 2013-09-14T11:58:50.707 回答