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 以使重定向永久化。
注意: 以后,请在此处询问之前查看相关文档(以便更好地了解一切工作原理)。
我需要做一个简单的 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 以使重定向永久化。
注意: 以后,请在此处询问之前查看相关文档(以便更好地了解一切工作原理)。