1

我想用 htaccess 重定向这个页面

products_filter.php?f16%5B0%5D=bla+bla+bla&cPath=72&M_ID=12x

products_filter.php?f16%5B0%5D=bla+bla&cPath=72&M_ID=12x

我试过这个(和许多其他方法)

RewriteCond %{QUERY_STRING} ^f16%5B0%5D=bla+bla+bla$
RewriteRule ^products_filter\.php$ http://www.example.com/products_filter.php?f16%5B0%5D=bla+bla&cPath=72&M_ID=12x [L,R=301] 

我在这里做错了什么?

4

2 回答 2

1

问题是$在这个正则表达式中使用(输入结束):

RewriteCond %{QUERY_STRING} ^f16%5B0%5D=bla+bla+bla$

由于您的查询字符串是:16%5B0%5D=bla+bla+bla&cPath=72&M_ID=12x

将该行更改为:

RewriteCond %{QUERY_STRING} ^f16%5B0%5D=bla+bla+bla(&|$)

更新:

看着你的问题,我意识到你使用了很多需要转义的特殊字符。

RewriteCond %{QUERY_STRING} ^(f16%5B0%5D)=bla\+bla\+bla(?:&(.*)|$) [NC]
RewriteRule ^(products_filter\.php)$ /$1?%1=bla+bla&%2 [L,R=301,NE] 

PS:这里使用NE标志很重要。否则%5B%5D将由 Apache 进一步编码。

于 2013-07-18T08:48:32.417 回答
0

试试这个代码:

RewriteCond %{QUERY_STRING} ^f16%5B0%5D=bla+bla+bla
RewriteRule ^products_filter\.php$ http://www.example.com/products_filter.php?f16%5B0%5D=bla+bla&cPath=72&M_ID=12x [L,R=301] 
于 2013-07-18T08:48:47.990 回答