【发布时间】:2014-07-26 18:39:35
【问题描述】:
在从 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,我对这个附加的参数(如价格范围)有疑问。每当我访问 /search/foo+bar/2&pricerange=20-50 时,它都不会翻译 pricerange 参数。
当我访问没有页码的相同 url 时,pricerange 参数被添加到 search 参数中。但仅当我使用多个与 + 连接的单词时。
我目前的 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;
}
【问题讨论】: