301从主域(www和非www)重定向到子域
问题描述:
我需要从像mydomain.com或www.mydomain.com这样的主域重定向到sub.mydomain.com - 并且这需要适用于所有请求,所以mydomain.com/whatever去sub.mydomain.com/whatever。301从主域(www和非www)重定向到子域
我试过这个,只在主域适用于非www:
RewriteCond %{HTTP_HOST} ^mydomain.com [NC]
RewriteRule ^(.*)$ http://sub.mydomain.com/$1 [L,R=301]
答
你可以凝聚成一个单一的规则,以及:
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule^http://sub.example.com%{REQUEST_URI} [R=301,L]
马克的有关/
点是一个重要的考虑因素。虽然你在.htaccess
中定义了规则,但输入(以及通过关联获取的反向引用)不会以一个前导斜杠开始,所以在这种情况下你确实需要明确的一个(就像你有的那样)。
因为我们只是想整个路径无论如何,使用%{REQUEST_URI}
是在这个意义上更可靠,因为它总是有一个斜线,无论我们使用在规则范围内的。
答
另外补充:
RewriteCond %{HTTP_HOST} ^www\.mydomain.com\.com$ [NC]
RewriteRule ^(.*)$ http://sub.mydomain.com$1 [R=301,L]
一件事还需要注意的是,你可能不想要在RewriteRule
中最后一个/
,因为它会向重定向的URL添加两个斜线(例如,http://mydomain.com/foo.html
变为http://sub.mydomain.com//foo.html
)。
我更好奇的只是为了学习的目的而不是其他任何事情,但这种重定向的好处是什么? – JM4 2011-02-22 16:34:52