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 301 将所有页面/文件(除了一个)重定向到新域?