使用 mod_rewrite 或 RedirectMatch 将 oldfile.aspx?p=blah 重定向到 newfile.php,忽略 ?p=blah

使用 mod_rewrite 或 RedirectMatch 将 oldfile.aspx?p=blah 重定向到 newfile.php,忽略 ?p=blah

我有一个网站,其中包含许多指向旧结构(已消失多年)的传入链接,其中有大量不再相关的 URL 变量,因为数据库映射已更改。因此,我想重定向:

http://www.mysite.com/oldfile.aspx?p=1&c=2

到:

http://www.mysite.com/newfile.php

末尾没有查询字符串。实际的查询字符串各不相同 - 有数百个,但由于它们不再与特定情况相匹配,因此我想将人们带到他们正在寻找的内容的新索引页,以便他们可以从那里找到它。

我目前使用:

RedirectMatch 301 ^/oldfile\.aspx$ /newfile.php

不过,这样查询就回到了最后。有人能告诉我我需要的巫术配方吗?

答案1

RewriteEngine on

RewriteRule ^oldfile.aspx*$ /newfile.php? [R]

这最终会导致在 url 中显示 newfile.php,如果您希望用户看到 oldfile.aspx 并真正点击 newfile.php,请在 mod_rewrite 规则中将 [L] 标志替换为 [R]。

在 newfile.php? 后添加问号,这样 ? 后的旧字符串就会丢失。

相关内容