Nginx stellt nur statische Dateien bereit, einige Dateinamen enthalten jedoch '?'. Ja, das Fragezeichen.
Alle URLs, die '?' Ausbeute 404, obwohl die Datei tatsächlich existiert. z.B
> GET /foo?lang=ar.html HTTP/1.1
...
...
< HTTP/1.1 404 Not Found
Während eine Datei mit dem Namen foo? Lang = ar.html am erwarteten Speicherort vorhanden ist.
Ich frage mich, ob es eine Möglichkeit gibt, Nginx anzuweisen, die gesamte Anfrage als URL zu behandeln, einschließlich der aktuell als Abfragezeichenfolge übersetzten.
Die einzige Lösung, die ich im Sinn habe, besteht darin, einen kleinen Webserver zu schreiben, der dies tut, und einen Nginx-Reverse-Proxy für diesen Webserver zu haben, aber ich bevorzuge es, ihn nur mit Nginx zu erledigen.
%3f
.GET /header.php%3fbla HTTP/1.1" 404
.Antworten:
Sie können try_files mit entweder
$request_uri
oder$uri$is_args$args
abhängig davon verwenden, ob die urlencodierten Bits dekodiert werden sollen oder nicht, wenn Sie nach dem Dateinamen suchen.quelle