1

私がやろうとしている

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;
4

2 に答える 2

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構成で-sが悪と見なされる場合は、(あなたの場合は)try_filesを使用する必要があります。

location /search
    try_files $uri /index.php?route=product/search&filter_name=$arg_q;
}
于 2012-07-23T14:00:21.963 に答える
0

問題は$兆候です。このような状況では事前に行う必要があります。解決:

rewrite ^/search?q=$(.*)$ /search.php?q=$1? last;
于 2012-07-23T13:53:07.810 に答える