如何使用apache mod_rewrite从网址中删除查询字符串?

问题描述 投票:1回答:1

我需要从网址中删除查询字符串,并将其转换为类似的内容:

site.com/somepage?p1=something1&p2=something2&.. pn = somethingn-> site.com/somepage/something1/something2/somethingn

我已经尝试过了,但是它不适合我要达到的目标。

RewriteCond %{QUERY_STRING} ^(.*)lang=([a-z]{2})&?(.*)$
RewriteRule (.*) /%2/$1?%1%3 [R=307]

同样在传递带有空格的值时,我需要将其重写为'-',但我不知道该怎么做

我在Ubuntu 16.04上使用apache 2.4

apache mod-rewrite apache2.4
1个回答
0
投票

由于参数的数量在您的情况下似乎是“无限的”,因此您可以创建一个循环来重写它们:

RewriteCond %{QUERY_STRING} ^[^&=]+=([^&]+)&?(.*)$
RewriteRule ^(somepage)(/.+[^/])?$ /$1$2/%1?%2 [R=301,L]

这将如下工作:

1) http://domain.tld/somepage?p1=something1&p2=something2&pn=somethingn
2) http://domain.tld/somepage/something1?p2=something2&pn=somethingn
3) http://domain.tld/somepage/something1/something2?pn=somethingn
4) http://domain.tld/somepage/something1/something2/somethingn
© www.soinside.com 2019 - 2024. All rights reserved.