我需要将所有子域请求重定向到我的htaccess中的主域。我需要它还包括某种通配符重定向。
e.g。 washington.mysite.com/重定向到mysite.com/washington
但我还需要将子域上的任何旧网址重定向到mysite.com/washington
e.g。 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]
但是,它仍会将旧网址附加到新网址
e.g。 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
任何建议都会非常感激:)
答案 0 :(得分:5)
RewriteCond %{HTTP_HOST} ^(www\.)?washington\. [NC]
RewriteRule ^(.*)$ http://www.mysite.com/washington [R=301,L]
在RewriteRule
/$1
中,(.*)
符合RewriteCondition
通配符括号。这就是您从附加的旧网址获取路径的原因。
我合并了您的2 (www\.)
个,?
匹配可选[NC]
。
?
标志是nocase
标志。
要清除查询字符串,请将RewriteCond %{HTTP_HOST} ^(www\.)?washington\. [NC]
RewriteRule ^(.*)$ http://www.mysite.com/washington? [R=301,L]
附加到重写网址的末尾
{{1}}