301リダイレクトとは何か?ホームページの移転には必須の機能を解説

2021年3月12日

301リダイレクトとは

リダイレクトとは

リダイレクトとは、ユーザーが指定したURLとは別のURLに自動的に転送する仕組みのことです。例えば、ホームページのURLを変更したときに、ユーザーが旧ページにアクセスしても新しいホームページを表示させたいときなどに利用されます。

クライアントからのリクエストに対してサーバーは、リダイレクトを表すHTTPステータスコードと転送先のURLをHTTP ヘッダに含めて返します。クライアントは返却されたURLに対して再度アクセスします。

リダイレクトのHTTPステータスコードには300番台が使用されます。その代表的なものが301リダイレクトです。

301リダイレクトとは

301リダイレクトは恒久的なリダイレクトを行う場合に利用されます。つまり今後、元のページに戻ることはないということです。

リダイレクトには他にも、一時的なリダイレクトを表す302リダイレクトもあります。ホームページがメンテナンス中のときにメンテナンス中画面へ転送させたり、スマートフォンからのリクエストを受け取った場合にスマートフォン用のページへ転送させたりします。

なぜ301リダイレクトが必要なのか

ユーザーへの配慮

例えば、ホームページのURLを変更した際に、301リダイレクトを設定していなければユーザーが旧ホームページを訪れたときに404(not found)が表示されてしまいます。新ホームページのURLもわからないので、ユーザーは新ホームページを見ることができません。

旧ホームページに新ホームページへのリンクを記載すればいいかもしれませんが、この方法だとユーザーにはリンクをクリックする手間が発生します。

301リダイレクトを使えば、ユーザーはホームページのURLが変更になったことを意識することなく、自動的に新ホームページへの訪問が可能となります。

SEO対策

301リダイレクトはSEO対策にも必要です。例えば、旧ホームページは検索上位に表示されていたとします。301リダイレクトを行わずに新ホームページを作成した場合、旧ホームページの検索評価を引き継ぎません。つまり、全く新しいホームページが出来上がっただけの状態なので、新ホームページはあらためて検索エンジンに評価される必要があります。しかし、301リダイレクトを行っていれば、新ホームページは旧ホームページの検索評価を引き継ぐので、検索上位を保持しておくことが可能です。

301リダイレクトは検索エンジンに対して、URLが変更となったことを知らせる役目も担っているのです。

301リダイレクトの使用例と.htaccessファイル

.htaccessファイル

301リダイレクトを行うには.htaccessファイル(テキストファイル)にリダイレクトの内容を記述します。.htaccessファイルを配置したディレクトリ以下のファイルが記述した内容の影響を受けます。

以下に301リダイレクトの使用例と.htaccessファイルの記述例を示します。

ホームページの移転

ホームページを移転する場合(ドメインが変わる場合)301リダイレクトを使用します。検索結果で旧ホームページが表示される場合や、他サイトから自分のホームページへのリンクが貼られている場合、ブックマークからホームページに訪問される場合など、自動的に新ホームページにリダイレクトしてくれます。

  • (変更前)http://www.old-domain.com
  • (変更後)http://www.new-domain.com

この場合のhtaccessの記述例は以下の通りです。

Redirect permanent / http://www.new-domain.com

URLの正規化

「www」の有無や、URL末尾の「/(スラッシュ)」の有無によって、同一のページを表示するのにURLは異なる場合があります。この場合、検索エンジンはそれぞれを異なったページと評価します。そうすると検索結果に与える影響もよくありません。こういった状態を防ぐためにURLの正規化を行います。

以下の記述例では、301リダイレクトを用いて「www」ありのURLへ統一しています。

  • (変更前)http://new-domain.com
  • (変更前)http://www.new-domain.com
  • (変更後)http://www.new-domain.com/

この場合のhtaccessの記述例は以下の通りです。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(new-domain.com)(:80)? [NC]
RewriteRule ^(.) http://www.new-doain.com/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^./index.html
RewriteRule ^(.*)index.html$ http://www.new-domain.com/$1 [R=301,L]

SSL対応

httpアクセスされた場合にhttpsへリダイレクトする場合です。GoogleもSSL化を推奨しており、SEO対策のためにもhttpsへのリダイレクトは必須といえます。

  • (変更前)http://www.new-domain.com/
  • (変更後)https://www.new-domain.com/

この場合のhtaccessの記述例は以下の通りです。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

参考