Apache nginx 重寫規則

Apache nginx 重寫規則

我必須為 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 文檔有一些例子。本質上,您使用了錯誤的字元來識別正規表示式結果。應該是$而不是%

您可能還必須為符合的重寫規則重複正規表示式。

相關內容