Nginx URL重写搜索?q = string(opencart)

时间:2012-07-23 13:40:33

标签: .htaccess url url-rewriting nginx opencart

我正在尝试

http://site.com/index.php?route=product/search&filter_name=QUERY

http://site.com/search?=QUERY

这是我的规则;它不起作用。

rewrite ^/search?q=(.*)?$ /index.php?route=product/search&filter_name=$1 last;

2 个答案:

答案 0 :(得分:3)

Nginx不允许您与查询字符串匹配,而是具有$args变量和if -s。您可以将此组合起来使示例如下所示:

(使用nginx if else语句更新)

location /search {
    if ($args ~ "q=(?<q>.*)?") {
        rewrite ^ /index.php?route=product/search&filter_name=$q last;
    }
    # Else (if no search query entered from form)
    rewrite ^ /index.php?route=product/search last;
}

但是自从nginx配置if -s are considered evil以来,你应该使用(在你的情况下)try_files

location /search
    try_files $uri /index.php?route=product/search&filter_name=$arg_q;
}

答案 1 :(得分:0)

问题是$标志。它需要事先在这种情况下。解决方案:

rewrite ^/search?q=$(.*)$ /search.php?q=$1? last;