【发布时间】:2013-09-18 23:42:59
【问题描述】:
假设我们有一个域 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
问题是:
使用此网址:root.com/demo(非 www 版本)不会将我重定向到 demo.root.com,可能是因为有两个重定向:
- 从非www到www
- 从子目录到子域
这个组合好像不行
我想要什么?
组合:
- 能够将主域从非 www 重定向到 www 而不会在子域中出现问题
- 将子目录重定向到子域
【问题讨论】:
标签: apache .htaccess redirect mod-rewrite http-status-code-301