空飛ぶとんジニア

平凡なエンジニアが日々関心を持ったことや学んだこと、感じたことを吐き出すブログ。緊張すると涙がでるのが特徴です。

1階層深いパスへリダイレクトする方法

1階層深くリダイレクトする。

久々にnginxの設定を変更する機会があって、わりとハマってしまった。

要件はこんな感じ

/数値(4桁以上)のリクエストを/hoge/数値(4桁以上)へリダイレクトする

例えば/1234 => /hoge/1234みたいな感じ
ただし/1234/みたいなケースはリダイレクトしないようにする

自分が検証してみた感じ結果は2種類

        location ~ '^/([0-9]{4,})$' {
          return 302 /hoge/$1;
        }
        location / {
          rewrite '^/([0-9]{4,})$' /hoge/$1 permanent;
        }

自分の好みでゆうと前者の方なんだけど、パフォーマンス的な違いはあるんだろうか???
まだまだ勉強が足りないorz

ちなみにハマってしまったのはキャッシュの影響で設定が反映されなかったこと
もしやと思ってシークレットモードでリクエストを投げたら正常に動作したので、ブラウザ側のキャッシュなのかなーと思っている。

皆さんパスの書き換えの時はシークレットモードを使いましょう!

nginx実践入門 (WEB+DB PRESS plus)

nginx実践入門 (WEB+DB PRESS plus)