Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx重写规则附加参数_Nginx_Rewrite - Fatal编程技术网

Nginx重写规则附加参数

Nginx重写规则附加参数,nginx,rewrite,Nginx,Rewrite,在从Apache迁移到Nginx时,我打破了Nginx重写规则 我有.htaccess重写规则,使/search/foo+bar/2&pricerange=20-50变成search.php?search=foo+bar&page=2&pricerange=20-50 我可以访问所有参数,就像您使用$\u-GET['search']、$\u-GET['page']和$\u-GET['pricelange']所期望的那样。 但是现在对于Nginx,我对这个附加参数有一些问题,比如pricerang

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

我有.htaccess重写规则,使
/search/foo+bar/2&pricerange=20-50
变成
search.php?search=foo+bar&page=2&pricerange=20-50
我可以访问所有参数,就像您使用
$\u-GET['search']、$\u-GET['page']和$\u-GET['pricelange']所期望的那样。

但是现在对于Nginx,我对这个附加参数有一些问题,比如pricerange。每当我访问
/search/foo+bar/2&pricerange=20-50
时,它不会转换pricerange参数。 当我访问没有页码的相同url时,pricerange参数会添加到搜索参数中。但只有当我使用多个与+连用的单词时

我当前的Nginx重写规则:

位置/{
try_files$uri/index.php$is_args$args;
重写^/search/(.*)/(.*)/$/search?search=$1和page=$2 last;
重写^/search/(.*)/(.*)/?$/search?search=$1和page=$2 last;
重写^/search/(.*)/$/search?search=上次$1;
重写^/search/(.*)/?$/search?search=$1 last;

}

获取参数在“?”之后开始
/搜索/foo+bar/2&pricerange=20-50
您需要将“&”替换为“?”或重写规则
rewrite^/search/(.*)/([0-9]+)&pricerange=(.*)$/search?search=$1&page=$2&pricerange=$3 last

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