我需要将特定域的所有URL重写为其他不带参数的准确URL,所有URL old.domain.com/* 到 new.domain.com 我已将此规则设置为。htaccess
old.domain.com/*
new.domain.com
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
old.domain.com/foo/bar 或
old.domain.com/foo/bar
old.domain.com/foo/bar/index.php
它工作得很好,但如果我 old.domain.com/index.php?goofy ,它重定向到 new.domain.com/?goofy ,我可以始终重定向到 新领域通用域名格式 ?
old.domain.com/index.php?goofy
new.domain.com/?goofy
新领域通用域名格式
当url为 old.domain.com/index.php?goofy Mod rewrite附录 ?goofy 到其目标url。这是因为mod rewrite追加了 query string (Url部分位于 ? 字符)到重定向的url。
?goofy
query string
?
如果您使用的是Apache 2.4,那么可以使用 QSD Query string Discard标志,用于从新url中删除旧查询字符串。
QSD
RewriteRule ^(.*)$ https://new.domain.it [R=permanent,L,QSD]
如果apache版本低于2.4,只需添加一个空问号 ? 在目标url的末尾删除旧的查询字符串。
RewriteRule ^(.*)$ https://new.domain.it/? [R=permanent,L]