cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimanakah nginx menggunakan penulisan semula untuk menambah ?mode=test pada semua html, dan hanya menambahnya sekali?

    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?

阿神阿神2834 hari yang lalu740

membalas semua(2)saya akan balas

  • 黄舟

    黄舟2017-05-16 17:22:29

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

    balas
    0
  • PHP中文网

    PHP中文网2017-05-16 17:22:29

    location / {
    if ($query_string !~ mode=test) {
        rewrite ^/(.*)\.html$ /.html?mode=test redirect;
    }
    }

    balas
    0
  • Batalbalas