htaccess 重定向到新页面但保留 "get" 参数

htaccess redirect to a new page but keeping "get" parameter

我需要做一个简单的 htaccess 重定向到一个新页面,同时重命名 "get" 参数。原来的 url 是:www.example.com/display_item.php?x=2735 我想重定向到: www.example.com/product.php?productcode=2735.

这是我最近的一次尝试(多次),但这不起作用,我得到了 404 回复:

RedirectMatch 301 /display_item.php?x=(.*)$  /product.php?productcode=

我想我已经非常接近解决这个问题了,但我现在正在拔头发!我已经在 Stack Overflow 上寻找解决方案,但没有找到有效的方法。

如评论中所述,查询字符串不是 URI 的一部分。这样,您将需要使用 mod_rewrite 单独检查查询字符串(在条件中使用 %{QUERY_STRING})。

RewriteEngine On

RewriteCond %{QUERY_STRING} ^x=(\d+)$ [NC]
RewriteRule ^display_item.php$ /product.php?id=%1 [L,R=302]

将 302 更改为 301 以使重定向永久化。

注意: 以后,请在此处询问之前查看相关文档(以便更好地了解一切工作原理)。