Heim  >  Fragen und Antworten  >  Hauptteil

Wie verwendet Nginx Rewrite, um ?mode=test zu allen HTML-Codes hinzuzufügen und es nur einmal hinzuzufügen?

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

Ich möchte es wie oben beschrieben konfigurieren, zuerst beurteilen $args und dann neu schreiben, ich weiß nicht, ob es möglich ist.
Und wie soll ich [[exklusive Modus=Test]] schreiben?

Update

Es wurde getestet und dies ist nicht möglich. $args können nicht in der if-Bedingung verwendet werden. Wie soll diese Idee nun umgesetzt werden?

Update

Ich habe beide Methoden in der Antwort ausprobiert und als ich Nginx neu gestartet habe, ist der gleiche Fehler aufgetreten:

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

und

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

Liegt es daran, dass das if-Modul nicht installiert ist?

阿神阿神2712 Tage vor676

Antworte allen(2)Ich werde antworten

  • 黄舟

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

    if ( $arg_mode !~ \w+ ){
    rewrite (.*) /index.html?mode=test redirect;
    }

    Antwort
    0
  • PHP中文网

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

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

    Antwort
    0
  • StornierenAntwort