首页 > 解决方案 > htaccess 在 $_GET 中带有数组参数

问题描述

我似乎无法在 htaccess Rewriterule 和 Rewritecond 中传递数组。

我的网址是

example.com/search.php?mc=88&fc%5B%5D=佳能&fc%5B%5D=戴尔&min=1&max=5000&cul%5B%5D=青色&cul%5B%5D=红色

如您所见,我有以下参数:mc、min、max、fc[] 和 cul[]。最后两个是数组。

当我在链接中有一个或两个数组时,如何为用户创建一个友好的 URL?

这是我的完整 htaccess 文件

选项 - 多视图

重写引擎开启

RewriteBase /

错误文档 404 /404.php

#从“/search.php?mc=123”重定向到“category-123”

RewriteCond %{THE_REQUEST} /search.php?mc=([^&]+)\sHTTP [NC]

RewriteRule ^ 类别-%1? [R=301,L,NE]

RewriteRule ^category-([^./]+)/?$ ?mc=$1 [L,QSA,NC]

#从“/search.php?sc=123”重定向到“brand-123”

RewriteCond %{THE_REQUEST} /search.php?sc=([^&]+)\sHTTP [NC]

RewriteRule ^ 品牌-%1? [R=301,L,NE]

RewriteRule ^brand-([^./]+)/?$ ?sc=$1 [L,QSA,NC]

#从“/product.php?s=ab-cd”重定向到“ab-cd”

RewriteCond %{THE_REQUEST} /product.php?s=([^&]+)\sHTTP [NC]

重写规则 ^ %1? [R=301,L,NE]

重写规则 ^([^./]+)/?$ ?s=$1 [L,QSA,NC]

#从“/search.php?categorie=abc&search_string=abc”重定向到“categorie-abc/cautare-abc”

RewriteCond %{THE_REQUEST} /search.php?categorie=([^&]+)&search_string=([^&]+)\sHTTP [NC]

RewriteRule ^ 类别-%1/cautare-%2? [R=301,L,NE]

RewriteRule ^categorie-([^./]+)/cautare-([^./]+)/?$ ?categorie=$1&search_string=$2 [L,QSA,NC]

#用数组重写

RewriteCond %{THE_REQUEST} /search.php?mc=([^&]+)&fc[]=([^&]+)&min=([^&]+)&max=([^&]+)&cul[ ]=([^&]+)\sHTTP [NC]

RewriteRule ^ /category-%1/fc[]-%2/min-%3/max-%4/cul[]-%5? [R=301,L,NE]

RewriteRule ^category-([^./]+)/fc[]-([^./]+)/min-([^./]+)/max-([^./]+)/cul[ ]-([^./]+)/?$ ?mc=$1&fc[]=$2&min=$3&max=$4&fc[]=$5 [L,QSA,NC]

标签: php.htaccessredirect

解决方案


推荐阅读