【NGINX】検索結果のリダイレクト

オリジナルの検索画面を移行するのでリダイレクトが必要になったけど設定に困った話

カテゴリとか年月日とか選択して検索する画面の検索結果を移行することになり試行錯誤しました。

test1.hoge/search/category/20210101-20211031/keyword/option/

上記のようなURLから移行先にリダイレクトする。

そのままだったら楽だったんだけど、年月日の開始と終了を分けたいとかGETで取得したいとかなって。。。

test2.hoge/search?category=カテゴリ&rdate_min=年月日開始&rdate_max=年月日終了&keyword=キーワード&option=オプション

こんなURLになるのでNGINXで設定することにしました。

スポンサーリンク

rewrite記述

自分はいつも下記のように記述していました。

# rewrite ^(.*)$ https://test2.hoge/$1 redirect;

これだとFQDNを変更するだけでいいんですが、今回は階層が増えていろいろごにょごにょしないといけない。。。

たどり着いた最終形態が下記。

location ~ ^/search/(?<category>.*)/(?<rdate>.*)/(?<keyword>.*)/(?<option>.*)$ {
    if ( $rdate ~ ^(?<min>[0-9]+)\-(?<max>[0-9]+)$ ) {
        set $rmin $min;
        set $rmax $max;
    }
    if ( $rdate ~ ^(?<min>[0-9]+)\-$ ) {
        set $rmin $min;
        set $rmax "";
    }
    if ( $rdate ~ ^\-(?<max>[0-9]+)$ ) {
        set $rmin "";
        set $rmax $max;
    }
rewrite ^(.*)$ https://test2.hoge/search/?category=$category&rdate_min=$rmin&rdate_max=$rmax&keyword=$keyword&option=$option redirect;
}

locationで値を変数にセットして使いまわす。

if文はよろしくないらしいけど仕方ない。

elseifとか使えないから変な感じになった。

一応希望通りの動作はできたけどしっくりこない。。。

もっといい方法があるのでしょうね。

コメント

タイトルとURLをコピーしました