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.