Nginx重写规则附加参数

时间:2014-07-26 08:40:41

标签: nginx rewrite

在从Apache迁移到Nginx时,我突破了Nginx重写规则。

我有.htaccess重写规则,/search/foo+bar/2&pricerange=20-50search.php?search=foo+bar&page=2&pricerange=20-50 我可以像$_GET['search'], $_GET['page'] and $_GET['pricerange']

那样访问所有的参数

但现在有了Nginx,我对这个附加的参数有问题,比如pricerange。每当我访问/search/foo+bar/2&pricerange=20-50时,它都不会翻译pricerange参数。 当我访问没有页码的同一个url时,pricerange参数会被添加到search参数中。但只有当我使用多个单词与+&#39s连接时才会使用。

我目前的Nginx重写规则:

location / { try_files $uri /index.php$is_args$args; rewrite ^/search/(.*)/(.*)/$ /search?search=$1&page=$2 last; rewrite ^/search/(.*)/(.*)/?$ /search?search=$1&page=$2 last; rewrite ^/search/(.*)/$ /search?search=$1 last; rewrite ^/search/(.*)/?$ /search?search=$1 last; }

1 个答案:

答案 0 :(得分:1)

GET参数在'?'之后开始
/ search / foo + bar / 2& pricerange = 20-50
你需要替换'&'用'?'或重写规则

rewrite ^/search/(.*)/([0-9]+)&pricerange=(.*)$ /search?search=$1&page=$2&pricerange=$3 last;

相关问题