webentwicklung-frage-antwort-db.com.de

Nginx-Umschreibregeln

Ich habe einige Probleme mit dem Nginx-Umschreibealgorithmus für WordPress.

Ich benutze dies für das Umschreiben und es funktioniert gut;

    server_name www.domain.com domain.com;
    if ($Host != 'domain.com') {
    rewrite ^/(.*)     http://domain.com/$1 permanent;
    } 

es macht diese URL;

http://domain.com/?author=1 

dazu;

http://domain.com/author/username/

das ist gut, aber mit einer solchen URL.

http://domain.com/?author=1&type=like

es macht es;

http://domain.com/author/username/?type=like

und ich erhalte keinen Fehler, aber die Abfrage funktioniert nicht.

Was mir fehlt

1
boranb

Die richtigen Nginx-Umschreiberegeln für WordPress sind:

location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

Dadurch wird alles über index.php gesendet und die angehängte Abfragezeichenfolge bleibt erhalten.

Wenn Sie PHP-FPM verwenden, sollten Sie dies aus Sicherheitsgründen auch vor Ihren fastcgi_params hinzufügen:

location ~ \.php {
        try_files $uri =404;

      //  fastcgi_param ....
      //  fastcgi_param ....

      fastcgi_pass 127.0.0.1:9000;
}
4
Chris_O

Bitte beachten Sie, dass das & Zeichen zwischen $ uri '&' $ args sehr wichtig ist, da es teilweise ohne es funktioniert, aber in einigen Fällen fehlschlägt.

Richtig:

location / {
    try_files $uri $uri/ /index.php?q=$uri&$args;
}

Falsch:

location / {
    try_files $uri $uri/ /index.php?q=$uri$args;
}

Mit der falschen Methode können mehrere Argumente verarbeitet werden:

https://example.com?myvar=xxx&secvar=xxx // Will work

Aber scheitern, wenn nur ein Argument übergeben wird:

https://example.com?myvar=xxx // Will NOT work

Das machte es wirklich schwer, den Tippfehler für mich zu finden, aber zumindest habe ich etwas Neues gelernt ^^

1
Steffan