首页 > 解决方案 > RewriteCond 从 Query_String 中获取数组参数并转换为路径,同时保留其余参数

问题描述

如何允许少数参数继续被重定向,而一个参数是一个要转换为 url 路径中的字符串的数组

例如: param1[]=apple&price=1,10 应该变成 /apple/?price=1,10

Orginal url: example.com/path1/?param1[]=apple&param2=1,100
Expected redirection: example.com/path1/apple/?param2=1,100

Orginal url: example.com/path1/path2/?param[]=apple&param2=1,100&param3=yes
Expected redirect: example.com/path1/path2/apple/?param2=1,100&param3=yes

标签: apache.htaccess

解决方案


您可以使用此重定向规则来处理param1[]=任何地方的查询参数:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^(.*&)?param1\[\]=([^&]*)(?:&(.*))?$ [NC]
RewriteRule ^(.*?)/?$ /$1/%2?%1%3 [R=301,NE,L]

推荐阅读