Bagaimanakah nginx menggunakan penulisan semula untuk menambah ?mode=test pada semua html, dan hanya menambahnya sekali?
阿神
阿神 2017-05-16 17:20:29
0
2
699
    location / {
            if($args *~ "mode=formal"){
                rewrite (.*) ? redirect;
                rewrite (.*) ?mode=test redirect;
            }
            else if($args [[不包含mode=test]]){
                rewrite ^/(.*).html$ /.html?mode=test redirect;
            }
            error_page 404 = @nodejs;
    }

Saya mahu mengkonfigurasinya dengan cara di atas, nilai dahulu $args dan kemudian tulis semula, saya tidak tahu sama ada ia boleh.
Dan bagaimanakah saya harus menulis [[excluding mode=test]]?

Kemas kini

Ia telah diuji dan ini tidak mungkin $args tidak boleh digunakan dalam keadaan if. Jadi bagaimana idea ini harus dilaksanakan?

Kemas kini

Saya mencuba kedua-dua kaedah dalam balasan, dan apabila saya memulakan semula nginx, ralat yang sama berlaku:

nginx: [emerg] unknown directive "if($arg_mode" in ....

dan

nginx: [emerg] unknown directive "if($query_string" in ....

Adakah kerana modul if tidak dipasang?

阿神
阿神

闭关修行中......

membalas semua(2)
黄舟

jika ( $arg_mode !~ w+ ){
tulis semula (.*) /index.html?mode=test redirect;
}

Ty80
location / {
if ($query_string !~ mode=test) {
    rewrite ^/(.*)\.html$ /.html?mode=test redirect;
}
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan