Nginx重写规则附加参数
在从Apache迁移到Nginx时,我打破了Nginx重写规则 我有.htaccess重写规则,使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
/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;