在从Apache迁移到Nginx时,我突破了Nginx重写规则。
我有.htaccess重写规则,/search/foo+bar/2&pricerange=20-50
到search.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;
}
答案 0 :(得分:1)
GET参数在'?'之后开始
/ search / foo + bar / 2& pricerange = 20-50
你需要替换'&'用'?'或重写规则
rewrite ^/search/(.*)/([0-9]+)&pricerange=(.*)$ /search?search=$1&page=$2&pricerange=$3 last;