【.htaccess】301ダイレクト

1 はじめに

本記事は、Apache /  “ .htaccess”による “301リダイレクト”のリダイレクトに
ついて整理したものです。

通信機器故障により、WordPressサイトを再構築しました。
その時のバックアップ記事を復元した際に、元のパーマリンクが失われてしまいました。
その対応の一つとして、301リダイレクトを利用するに至りました。

本記事は、自分の備忘録として残すことを第一目的として記述しました。

2 301リダイレクトとは

2.1 301リダイレクトの基本

301リダイレクトとは、ウェブサイトのURLが恒久的に変更された際に、
古いURLから新しいURLへユーザーと検索エンジンを自動的に転送する
HTTPステータスコードです。

“301 Moved Permanently” (恒久的に移動) という意味を持ち、
ブラウザや検索エンジンに対して、
指定されたURLが永続的に新しいURLに置き換わったことを伝えます。

2.2 301リダイレクトの役割

リダイレクトの役割として、下に示すようなことが挙げられます。

1. ユーザー体験の向上
古いURLにアクセスしたユーザーを自動的に新しいURLへ転送することで、
エラーページを表示させることなく、スムーズなナビゲーションを提供します。
 
2. 検索エンジンSEOに影響が少ない
検索エンジンに対してURLの変更を伝え、
古いURLに蓄積された評価(PageRankや“リンクュース: link juice”など)を
新しいURLに引き継がせます。
これにより、検索順位の低下を防ぎ、場合によっては向上させることができます。 
 
3. ウェブサイト構造の変更
Webサイトのリニューアルやドメイン変更など、
大規模な構造変更を行う際に、URLの変更を伴う場合、301リダイレクトは不可欠です。
 
4. URLの正規化
同じコンテンツに複数のURLでアクセスできる場合
(例: “example.com/page”と“example.com/page/”)、
301リダイレクトを使って代表的なURL(正規URL)に統一することで、
検索エンジンからの評価を集中させることができます。

3 301リダイレクトの設定

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

3.1.1 .htaccessファイル(Apache)に設定する

Apache使用している場合、 “.htaccess”ファイルに以下のコードを追加することで、
301リダイレクトを設定できます。

この例では、“/old-page.html”にアクセスしたされた場合、“/new-page.html”に
リダイレクトします。

ドメイン全体をリダイレクトする場合は、以下のように記述します。

3.1.2 .htaccessファイル(Apache)では、mod_rewriteでもリダイレクトできる

.htaccessには、 “mod_rewrite”という構文でも、リダイレクトを設定できます。
規則があってのリダイレクトする場合は、Redirect構文よりも便利です。

本項記事は、どんな記述方があるのか、インデックスとすることを目的にしたものであるので、
紹介するだけに留めます。

なお、本項の内容は、次のWebページを参考にしました。

【図解】htaccessの301リダイレクト|書き方・設置場所・設定方法
| Webマーケティングの情報メディア【テンナラ】

1. ドメイン変更時のリダイレクト
サイトのドメインが変更された場合に、古いドメインから新しいドメインへリダイレクトする
ための構文です。
 
下に、古いドメイン名を“aaa”、移転先ドメイン名を“bbb”ととした場合の例を示します。

 
 
2. ディレクトリ変更時のリダイレクト
サイト内のファイルがあるディレクトリが変更となった場合に、
変更先へリダイレクトするための構文です。
 
下に示す例は、“index.html”が置かれている旧ディレクトリの“example.com/aaa/index.html”を、
新ディレクトリ“example.com/bbb/index.html”とリダイレクトするものです。
ディレクトリ名のみ抜き出して指定する形となります。

 
 
3. ページファイル変更時のリダイレクト
Webサイト内の特定のページURLが、変更された場合に使用する構文です。
 
下に示す例は、変更前のページを“example.com/aaa.html”、
変更後のページを“example.com/bbb.html”としたものです。
この場合は、URL末尾のファイル名だけの指定で問題ありません。

 
 
4. ドメイン・ディレクトリ変更時のリダイレクト
URL全体が変更となる場合は、以下のように記述します。
下に示す例は、旧URLが“https://www.aaa.com/aaa/aaa.html”、
新URLが“https://www.bbb.com/bbb/bbb.html”の場合のものです。
 

 
 
5. 特定のディレクトリを除外するリダイレクト
サイト全体にリダイレクトを指定した場合でも、特定のディレクトリだけは除外したい場合が
あります。
 
特定のディレクトリをリダイレクトから除外するための構文は、以下のように記述します。
下に示す例は、“bbb”ディレクトリの場合のものです。

 
 
6. 404エラーページへのリダイレクト
404エラー発生時に、カスタマイズして別に用意しているページへ転送する場合の構文です。

 
下に示す例は、 カスタムページのURLを“http://www.example.com/error/404.html”とした場合です。

3.1.3 WordPressプラグイン

WordPressを使用している場合、Redirectionなどのプラグインを利用することで、
簡単に301リダイレクトを設定できます。

ここで注意したいのが、信頼できるプラグインを選ぶことです。

自動でリダイレクトを追加しないことを選べるプラグインを選ぶべきです。
パーマリンクを一時的に変更した時など勝手にリダイレクトが追加されて
(自動追加無しのオプションなんてあったっけ?)、
その結果がエンドレスのリダイレクトループを作ってしまい、
にっちもさっちもいかなくなった経験があります。
結局は、WordPressを初期化をせざるを得なくなったと記憶しています。

3.2 30リダイレクト設定時の注意点

301リダイレクトを利用する際には、下に挙げる点に注意する必要があります。
特に、リダイレクトループを作ってしまわないよう充分注意しなければなりません。

1. 正確なURL
リダイレクト元のURLとリダイレクト先のURLを正確に記述する必要があります。
誤ったURLを設定すると、
意図しないページにリダイレクトされたり、エラーが発生したりする可能性があります。
 
2. リダイレクトループの回避
リダイレクトループとは、A→B、B→Aのように、
リダイレクトが無限に繰り返される状態です。
リダイレクトループが発生すると、ブラウザがエラーを表示し、ユーザー体験を損ないます。
 
3. リダイレクトチェーンの回避と不要なリダイレクトの削除
不要になったリダイレクトは、削除すべきです。
過剰なリダイレクトは、Webサイトのパフォーマンスを低下させる可能性があります。
 
4. HTTPSへのリダイレクト
ウェブサイトをHTTPS化した場合、
HTTPからHTTPSへのリダイレクトを設定する必要があります。
これにより、ユーザーのセキュリティを確保し、SEO効果を高めることができます。
 
5. リダイレクトのテスト
301リダイレクトを設定したら、必ずテストを行い、正しく動作することを確認します。
ブラウザのデベロッパーツールやオンラインのHTTPステータスコードチェッカーなどを
利用して、リダイレクトが正しく行われているか確認できます。

以上

本記事の元となっているWordで作成したPDFを
ページ最後に貼り付けました。
少しでも役に立てていただければ、うれしく思います。

このPDFファイルは、自由に配布されてもかまいません。
ただし、再配布の際には、
入手元著者名は明らかにしてください

なお、上のPDFファイルの内容、また本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。

お問い合わせ