まめぞうの技術メモ

IT関連で勉強したことをメモします

Apache HTTP Server 2.4 (httpd)で、301リダイレクトする方法

前回は、以下の記事で、リバースプロキシの設定方法を解説しましたが、

tech.mamezou00000.com

今回は「.htaccess」を用いた「301 リダイレクト」の方法をまとめます。

そもそも301 リダイレクトってなに?

301リダイレクトとは、特定のURLに来たリクエストを、別のページに転送するための方法です。

ホームページやブログのURLが変わったときなどによく使われるテクニックです。

引っ越し

301リダイレクトの設定方法

2箇所設定が必要です。

.htaccessの設定

まずは、転送設定したいフォルダの下に、「.htaccess」というファイルを作ります。

以下にサンプルを書きます。

RewriteEngine on
RewriteRule ^index.html$ http://localhost/reverse-proxy.html [L,R=301]

解説します。

まず、Rewriteengin on は、こちらは301リダイレクトをするのにOnする必要があるので記載してます。

RewriteRuleですが、

  • 「^index.html$」は転送ルールを表します。
  • 正規表現でパターンマッチングされています。
  • 「^」は「~ではじまり」
  • 「$」は「~で終わる」 という意味です。

この場合は、「index.html」が転送対象である、ということを示しています。

http://localhost/reverse-proxy.html

は転送先のURLを表します。

 [L,R=301]では、

  • L はここで設定終わり、という意味を、
  • R=301は、301リダイレクトする、という意味を表します。

.htaccessでリダイレクトさせる許可の設定

もう一箇所設定が必要です。

.htaccessでリダイレクトをするために、許可設定が必要です。

rootユーザーで、httpdの設定ファイル「/etc/httpd/conf/httpd.conf」を開いてください。

今回は、「/var/www/html」の下に、「.htaccess」を置きましたので、該当箇所の設定を変更します。

の下の、「Allow Override」を変更します。

デフォルトでは、「None」になっていますので、これを「FileInfo」に変更してください。

リダイレクトを許可、という意味です。

以下の画面のようなイメージです。

httpdの設定

ちなみに、「All」でも構いませんが、その他の「.htaccess」設定をなんでも許可、という意味になりますんで、注意してください。

 

この後、以下のコマンドで、httpdを再起動してください。

systemctl restart httpd

301リダイレクト設定が完了したので、動きを確認しよう

早速、動かしてみましょう。

ブラウザで、http://localhost/index.htmlと打ってみます。

ブラウザでアクセス

ちゃんと転送された

 301リダイレクトと、リバースプロキシの違い

この前紹介したリバースプロキシでも、特定のURLにきたリクエストを転送していましたが、今回の301リダイレクトとは何が違うのでしょうか。

転送された結果、URLが変わらないのが、リバースプロキシ。URLが変わるのが301リダイレクトです。

ためしに、reverse-proxy.htmlというファイルを作って、そこに転送させるように設定して実験します。

リバースプロキシ こちらはリバースプロキシです。

ブラウザで、http://localhost/rp と打ってエンターを打ちました。

URLはそのままです。

リバースプロキシ

一方、301リダイレクトは、先程の例の通り、

http://localhost/index.html と打ったところ、

http://localhost/reverse-proxy.html

URLが変わっています。

301リダイレクト

リバースプロキシは、httpdサーバがそのまま別のURLに転送してくれます。

ブラウザは、転送されたことを知りません。

301リダイレクトは、一度ブラウザに転送先URLが示されて、ブラウザが転送先URLにアクセスします。

なので、このような違いになるのです。

検索エンジンに新しいURLを知らせるなら、301リダイレクト

ホームページやブログの引っ越しでは、一般的に301リダイレクトを使います。

なぜなら、引っ越し先のURLを、検索エンジンに知らせたいからです。

まとめ

301リダイレクトの使い方、わかったでしょうか。

どんどん活用してくださいね。