nginx のrewrite でクエスチョンマークがある時。

例えば、

test.com/?=111 を test.com/?=000

にリダイレクトさせたい場合、

redirect \?=111 ?=000 permanent;

としてもエラーになる。
というのも、nginx は ? を GETパラーメーターと認識しない。

nginx には、 $args という変数が定義されていて、これが GETパラメーターを取得する。
そこで、上記の場合は、以下のようにする。

set $p "";

if ($args ~ "p=(.*)") {
set $p $1;
}

if ($p = "111") {rewrite ^.*$ /?p=000? permanent; break;}
 
なお、/p=000? の赤字の?がないと、転送元のGETパラーメーターを引き継いでしまうので、注意。
 
ワードプレスでugly url の時に、リダイレクト設定をする場合に必要。
 
★★★★★★★★★★★★★★★★★
お仕事に関するご相談・お問い合わせは 株式会社オートプロジェクトのお問い合わせページよりお願いします。

運営サイト:
 IMCショップ
 オートプロジェクト

システム開発案内:
 株式会社オートプロジェクト