Ich erreiche das gewünschte Ergebnis mit dem folgenden Konfigurations-Snippet:
location = / { index index.php; } location / { try_files $uri /index.php?tags=$request_uri; }
try_files
versucht ... Dateien. Wenn Sie damit suchen /
, suchen Sie nach einer Datei mit demselben Namen. Sie wird nicht als "Find the index file" interpretiert. index
macht diesen Job Daher müssen Sie diesen Sonderfall von der Standardposition für den Rückfall trennen.
Das Beste ist der letzte Wunsch: Die Argumente werden nicht einmal verschlüsselt, da dies nicht erforderlich ist (nur das erste Fragezeichen eines URIs ist relevant, da alles, was folgt, sowieso ein Argument ist).
Beachten Sie die Verwendung von $request_uri
(die den angeforderten URI enthält, mit Argumenten, aber nicht normalisiert / $uri
bereinigt ) anstelle des normalisierten (der den URI bereinigt und Argumente entfernt). So können Sie am Ende mit:
///foo?bar=yes => index.php?tags=///foo?bar=yes
Wenn es Ihnen etwas ausmacht, können Sie es $uri
kombinieren mit $args
:
location = / { index index.php; } location / { try_files $uri /index.php?tags=$uri?$args; }
produzieren:
///foo?bar=yes => index.php?tags=/foo?bar=yes