在用 mod_rewrite 重写 URL 后,301 重定向将参数添加到 URL

301 redirect adding param to URL after rewriting URL with mod_rewrite

我正在重写我的 URL,如下所示:

RewriteRule ^/?page/([a-z0-9\-]*)/ /page.php?url= [L]

现在我改变了一个 URL 并想用 301 重定向它:

Redirect 301 /page/example-old/ /page/example-new/

问题:它添加了 URL 参数。结果是:

/page/example-new/?url=example-new

我做错了什么?我想要不添加 URL 参数的重定向。

如果您已经在使用 mod_rewrite,通常最好也使用 mod_rewrite 实现重定向:

RewriteRule ^/?page/example-old/ /page/example-new/ [R=301,L]
RewriteRule ^/?page/([a-z0-9\-]*)/ /page.php?url= [L]

这样第一条规则会阻止第二条规则 运行,因为第一条规则使用 L(最后一个)标志。