3

我需要重定向所有子域请求以重定向到我的 htaccess 中的主域。我需要它还包括某种通配符重定向。

例如,washington.mysite.com/ 重定向到 mysite.com/washington

但我还需要将子域上的任何旧网址重定向到 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

我们欢迎所有的建议 :)

4

1 回答 1

5
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]
于 2012-08-29T21:34:21.957 回答