Apache-Umschreiberegel für nginx

Apache-Umschreiberegel für nginx

Ich muss eine Umschreiberegel sowohl für Apache als auch für Nginx erstellen.

Erforderliche Änderung:

/search?q=test&**p**=1 to /search?q=test&**page**=1

Für Apache funktioniert der folgende Code gut, aber ich kann ihn nicht für nginx konvertieren.

RewriteCond %{QUERY_STRING} ^q=(.*)&p=([0-9]+)(.*)$
RewriteRule ^(search/?)$ /search?q=%1&page=%2 [NC,L,R]

Ich habe so etwas versucht:

  if ($query_string ~ "^q=(.*)&p=([0-9]+)(.*)$"){
    rewrite ^/(search/?)$ /search?q=%1&page=%2 redirect;
  }

Aber es endet ungefähr so:

/search?q=%1&page=%2&q=%1&page=%2&q=%1&page=%2&q=%1&page=%2&q

Was mache ich falsch?

Antwort1

Nginx-Dokumentation zum Neuschreiben von Modulenhat einige Beispiele. Im Wesentlichen verwenden Sie das falsche Zeichen, um die Ergebnisse des regulären Ausdrucks zu identifizieren. Es sollte sein $statt %.

Möglicherweise müssen Sie Ihren regulären Ausdruck auch wiederholen, um die Übereinstimmung mit der Umschreiberegel zu finden.

verwandte Informationen