LoginSignup
0
1

More than 1 year has passed since last update.

Nginxでディレクトリに応じたリダイレクト処理

Last updated at Posted at 2022-04-10

Nginxにリダイレクト処理を書くことは多々あるかと思います。Nginxはお手軽にconfファイルにリダイレクト処理を書くだけでとてもかんたんです。
例えば、https://onodera.com へのアクセスをすべてhttps://hogehoge.comにリダイレクトしたい場合はconfファイルに
rewrite ^/(.*) https://hogehoge.com/ redirect;
と書けばいいだけです。
シンプルなリダイレクトだと設定もシンプルなのですが、条件付きだとけっこう書き方がややこしかったりします。
実際に「このディレクトリ配下はリダイレクトせず、そのまま表示したい」みたいなことがありました。
具体的には、「onodera.comの/newsと/blogsはリダイレクトさせず、それ以外はhogehoge.com にリダイレクトしたい」
というような内容です。

まずこう書けば行けるかなと思ったのですが、

if ($request_uri !~ ^/news && $request_uri !~ ^/blogs){
    rewrite ^/(.*) https://hogehoge.com/ redirect;
}

だめだった。

理由はこちら。

Nginxで複数条件のIF文を書く方法がすごいw

複数条件を書くのができないみたいです。

なので突貫工事的ではありますが、以下のような書き方をしました。
変数を使う方法。

set $flg 1;
if ($request_uri ~ ^/news) {
      set $flg 0;
}
if ($request_uri ~ ^/blogs) {
      set $flg  0;
}
if ($flg = 1) {
      rewrite ^/(.*) https://hogehoge.com/ redirect;
}

$flgの値に応じてリダイレクトするかしないかを判断させてます。

おわり。

質問あればtwitter経由で連絡ください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1