如何在htaccess中将所有子域请求重定向到主域?

nic*_*coz 3 .htaccess

我需要将所有子域请求重定向到我的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]
Run Code Online (Sandbox Code Playgroud)

但是,它仍然将旧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

我们欢迎所有的建议 :)

dee*_*our 5

RewriteCond %{HTTP_HOST} ^(www\.)?washington\. [NC]
RewriteRule ^(.*)$ http://www.mysite.com/washington [R=301,L]
Run Code Online (Sandbox Code Playgroud)

在你的RewriteRule你有/$1(.*)通配符括号集匹配.这就是您从附加的旧URL获取路径的原因.

我结合你的2 RewriteCondition,使(www\.)比赛可选?.

[NC]标志是nocase标志.

要清除查询字符串,请附加?到重写URL的末尾

RewriteCond %{HTTP_HOST} ^(www\.)?washington\. [NC]
RewriteRule ^(.*)$ http://www.mysite.com/washington? [R=301,L]
Run Code Online (Sandbox Code Playgroud)