我必須為 apache 以及 nginx 建立重寫規則。
所需變更:
/search?q=test&**p**=1 to /search?q=test&**page**=1
對於 Apache,下面的程式碼運行良好,但我無法將其轉換為 nginx。
RewriteCond %{QUERY_STRING} ^q=(.*)&p=([0-9]+)(.*)$
RewriteRule ^(search/?)$ /search?q=%1&page=%2 [NC,L,R]
我嘗試過這樣的事情:
if ($query_string ~ "^q=(.*)&p=([0-9]+)(.*)$"){
rewrite ^/(search/?)$ /search?q=%1&page=%2 redirect;
}
但它以這樣的方式結束:
/search?q=%1&page=%2&q=%1&page=%2&q=%1&page=%2&q=%1&page=%2&q
我究竟做錯了什麼?
答案1
關於模組重寫的 Nginx 文檔有一些例子。本質上,您使用了錯誤的字元來識別正規表示式結果。應該是$
而不是%
。
您可能還必須為符合的重寫規則重複正規表示式。