我想基于其查询字符串的一部分重写以下URL,但同时,我想保留查询字符串的其余部分。
原始网址:
http://example.com/index.php?route=product/show&item_id=25&show_mobile=true
转换为:
http://example.com/product/show/?item_id=25&show_mobile=true
我搜索过并在Apache上找到以下wiki:
https://wiki.apache.org/httpd/RewriteQueryString
但它没有用于在Query字符串中重写单个Key& Value对并保留其余部分的部分。
答案 0 :(得分:1)
这应该让你接近,它基于wiki中的“删除密钥”条目。您希望隔离将在第一次捕获中进入路径的部分,并对剩余的查询字符串使用第二次捕获。
RewriteCond %{QUERY_STRING} ^(route=[^&]*)&(.*)
RewriteRule ^index.php /%1?%2
答案 1 :(得分:0)
您可以使用此通用规则从查询字符串中以任意顺序捕获route
的参数值,并在目标网址中重复使用:
RewriteEngine On
RewriteCond %{THE_REQUEST} \?(.*&)?route=([^&]*)&?(\S*)\sHTTP [NC]
RewriteRule ^index\.php$ /%2?%1%3 [R=301,NE,L]