ある案件にて、htmlのファイル名(URL)を変えて欲しいとリクエストされました。すでにgoogleにインデックスされていたので、リダイレクトすることにしました。この案件で、webサーバは、ApacheでなくNginxなので、Nginxにおいて特定のページ(URL)をリダイレクトさせる設定をメモしておきます。

方針

「nginx リダイレクト」でググると、rewriteを使った方法が多くヒットしましたが、正規表現などのオプションを指定しないといけないので多少でも処理が重たくなりそうなのと、returnの方が、よりシンプルにかけそうだったのでそっちにしました。

Nginx の Community にも似たような記載がありました。

Nginx | Pitfalls and Common Mistakes

URLの引数(リクエストパラメータ)も付与してリダイレクトできるようにQuery Stringも用います。

やり方

nginxでは、設定ファイル(/etc/nginx/nginx.conf)に書いてあるかと思います。そこを書き換えてURLをリダイレクトできます。

http://hoge.com//hogehoge.html
で、アクセスが来たら

http://hoge.com//hogihogi.html

に、リダイレクトしたい場合。

を記述する。conf.dファイル中に入れる場合は下記のようになった。

修正前

修正後

パラメータが付与されてリダイレクトされてるかの確認

curl コマンド(HTTPアクセスをしてコンテンツを取得できるコマンド)を使ってできます。

パラメータ:?aaa=bbb

$ curl -X GET http://hoge.com/hogehoge.html\?aaa=bbb -I

とすると、以下のレスポンスになる。

  • hogihogi.htmlにダイレクトされてる
  • パラメータが付与されてる

 

しかし、リダイレクトの設定するだけでも、正規表現やら、ステータスコードやら、Nginxの事とか知っておかなきゃできないことが多いですね。。もし間違ってたら、ご指摘ください!

参考