2012-03-16 122 views
0

注意:仅使用<VirtualHost>参数。如何将目录重定向到子域,并将www子域重定向到非www子域?

如何重定向一个目录(比如example.com/groups/)到一个子域(比如groups.example.com),也即子域(www.groups.example.com)该子域的非www URL的万维网(groups.example.com )?


正(⇒表示 '应该301重定向'):groups.example.com


我已阅读,使用<VirtualHost>优于

example.com/groups/groups.example.com

www.groups.example.com⇒所有那些通常使用的重定向规则(即使用重定向磁盘I/O上的离子引擎is pretty heavy)。所以,如果可能的话,我想在.htaccess/httpd.conf中使用<VirtualHost>解决上述问题。谢谢!

回答

1

像这样的东西应该工作

<VirtualHost *:80> 
    ServerName example.com 
    ServerAlias groups.example.com www.groups.example.com 

    RewriteEngine on 
    # example.com/groups/ -> groups.example.com 
    RewriteCond %{SERVER_NAME} ^example\.com$ 
    RewriteRule ^/(\w+)/?$ http://$1.example.com [R=301,L] 

    # www.groups.example.com -> groups.example.com 
    RewriteCond %{SERVER_NAME} ^www\.(\w+)\.example\.com$ 
    RewriteRule ^/(.*)$ http://%1.example.com/$1 [R=301,L] 
</VirtualHost> 

或专门为团体

<VirtualHost *:80> 
    ServerName example.com 
    ServerAlias groups.example.com www.groups.example.com 

    RewriteEngine on 
    # example.com/groups/ -> groups.example.com 
    RewriteCond %{SERVER_NAME} ^example\.com$ 
    RewriteRule ^/groups/?$ http://groups.example.com [R=301,L] 

    # www.groups.example.com -> groups.example.com 
    RewriteCond %{SERVER_NAME} ^www\.groups\.example\.com$ 
    RewriteRule ^/(.*)$ http://groups.example.com/$1 [R=301,L] 
</VirtualHost> 
+0

它不工作,因为你缺少在第二行的目录(/组/)。你能纠正它吗? **编辑:**有问题。即使进行了更正,它也不起作用。 – 2012-03-16 13:19:52

+0

在我的服务器上进行了测试,他们工作。也许你没有在这些行之前添加RewriteEngine?修改我的答案以反映示例httpd配置 – nikoshr 2012-03-16 13:59:45