我需要将所有子域请求重定向到我的 htaccess 中的主域。我还需要它包含某种通配符重定向。
例如washington.mysite.com/重定向到 mysite.com/washington
但我还需要将子域上的任何旧 URL 重定向到 mysite.com/washington
例如washington.mysite.com/category.aspx?washington-attractions&CatID=17 重定向到 my-site.com/washington
到目前为止,这是我的代码:
RewriteCond %{HTTP_HOST} ^washington\.mysite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.washington\.mysite\.com$
RewriteRule ^(.*)$ "http\:\/\/www\.mysite\.com\/washington/$1" [R=301,L]
但是它仍然将旧 URL 附加到新 URL
例如washington.mysite.com/category.aspx?washington-attractions&CatID=17 重定向到 my-site.com/washington/category.aspx?washington-attractions&CatID=17
基本上我需要重定向washington.mysite.com/*(anything)到my-site.com/washington
我们欢迎所有的建议 :)
最佳答案
RewriteCond %{HTTP_HOST} ^(www\.)?washington\. [NC]
RewriteRule ^(.*)$ http://www.mysite.com/washington [R=301,L]
在您的
RewriteRule
中,您有 /$1
匹配 (.*)
通配符组括号。这就是您从附加的旧 URL 获取路径的原因。我结合了你的 2 个
RewriteCondition
,使 (www\.)
与 ?
匹配可选。[NC]
标志是 nocase
标志。要清除查询字符串,请将
?
附加到重写 URL 的末尾RewriteCond %{HTTP_HOST} ^(www\.)?washington\. [NC]
RewriteRule ^(.*)$ http://www.mysite.com/washington? [R=301,L]
关于.htaccess - 如何将所有子域请求重定向到 htaccess 中的主域?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12186750/