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

Posted

技术标签:

【中文标题】htaccess 重定向到新页面但保留“get”参数【英文标题】:htaccess redirect to a new page but keeping "get" parameter 【发布时间】:2016-04-22 14:23:40 【问题描述】:

我需要做一个简单的 htaccess 重定向到一个新页面,同时重命名“get”参数。原始网址是: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=$1

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

【问题讨论】:

您没有阅读您尝试使用的工具的文档。查询字符串是 not URL 的一部分。因此,您的模式永远不会匹配任何请求。 【参考方案1】:

正如评论中提到的,查询字符串不是 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 以使重定向永久化。

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

【讨论】:

非常感谢 Mike - 这很有效!我现在将对此进行更多研究,因为我完全走错了切线......再次感谢。

以上是关于htaccess 重定向到新页面但保留“get”参数的主要内容,如果未能解决你的问题,请参考以下文章

使用 htaccess 重定向页面,但保留 URL 结构并仅更改域

使用 .htaccess 从旧页面重定向到新页面

我如何 .htaccess 301 将所有页面/文件(除了一个)重定向到新域?

.htaccess 301 将旧域上的所有页面重定向到新域上的单个页面

.htaccess 将文件夹下的所有页面重定向到新域

htaccess 将旧域重定向到新域