重写URL删除所有后域名

时间:2018-02-19 16:45:32

标签: apache mod-rewrite url-rewriting

我需要将特定域的所有网址重写为其他没有参数的网址,所有网址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吗?

1 个答案:

答案 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]