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