nginx の Apache 書き換えルール

nginx の Apache 書き換えルール

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 ドキュメントにはいくつか例があります。基本的には、正規表現の結果を識別するために間違った文字を使用しています。$ではなく を使用する必要があります%

書き換えルール内で一致する正規表現を繰り返す必要がある場合もあります。

関連情報