【问题标题】:Nginx rewrite rules additional argumentsNginx 重写规则附加参数
【发布时间】: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; }

【问题讨论】:

    标签: nginx rewrite


    【解决方案1】:

    GET 参数在 '?' 之后开始
    /search/foo+bar/2&pricerange=20-50
    您需要将 '&' 替换为 '?'或重写规则 <pre>rewrite ^/search/(.*)/([0-9]+)&amp;pricerange=(.*)$ /search?search=$1&amp;page=$2&amp;pricerange=$3 last;</pre>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多