我需要将特定域的所有网址重写为其他没有参数的网址,所有网址old.domain.com/*
改为new.domain.com
我已将此规则设置为.htaccess
RewriteCond %{HTTP_HOST} ^old.domain.com [OR]
RewriteCond %{HTTP_HOST} ^www.old.domain.com
RewriteRule ^(.*)$ https://new.domain.it [R=permanent,L]
所以,如果我去
old.domain.com/foo
或
old.domain.com/foo/bar
或
old.domain.com/foo/bar/index.php
效果很好,但是如果我转到old.domain.com/index.php?goofy
,它会重定向到new.domain.com/?goofy
,我可以始终重定向到new.domain.com
吗?
答案 0 :(得分:1)
当网址为old.domain.com/index.php?goofy
时,Mod-rewrite会将?goofy
附加到其目标网址。这是因为mod-rewrite将query string
(?
字符后面的Url部分)附加到重定向的网址。
如果您使用的是Apache 2.4,则可以使用QSD
查询字符串放弃标记从新网址中删除旧的查询字符串。
RewriteRule ^(.*)$ https://new.domain.it [R=permanent,L,QSD]
如果您的apache版本低于2.4,只需在目标网址末尾添加一个空问号?
即可删除旧的查询字符串。
RewriteRule ^(.*)$ https://new.domain.it/? [R=permanent,L]