turutani.com

301リダイレクトとは?
~コードの書き方と転送方法~

更新日:2019.06.29

アイキャッチ画像

 サイトの移転や,ドメイン・ディレクトリを引っ越した際に使用する301リダイレクトについて.
 その使い方や種類,コードの書き方を解説

301リダイレクトとは?~使う理由とメリット~

 301リダイレクトとは,あるWebページにアクセスがあった際に,そのアクセスを別のページに転送する機能です.

 サイトを移転したり,新しく作り直したときなど,URLやドメインが変わった際に旧サイトへのアクセスを新サイトへリダイレクトする時によく使います.


 301リダイレクトを行うメリットとして,検索エンジンによる旧サイトへの評価(SEO)が,リダイレクトした新サイトに引き継がれるというものがあります.

 例えばサイトのドメイン変更を行うと,内容が全く一緒であっても,検索エンジンはドメイン変更前と変更後のサイトを別のサイトとして認識してしまいます.

 当然サイトに対するSEOも,別々に評価するため,旧サイトで上位表示を獲得している場合でも新サイトに移転後にゼロからのスタートとなります.

 こういった時に301リダイレクトを使用して旧サイトに来たアクセスを新サイトに転送するようにすれば,旧サイトで獲得していたSEO評価を新サイトに引き継ぐことができます.


 また301リダイレクトはURLにおけるwww.の有り無しや,httpからhttpsへの移行などページのURLを統一するURLの正規化にも使われます.



301リダイレクトと302リダイレクトの違い

 有名なリダイレクトの種類として,301リダイレクトとは別に302リダイレクトというものがあります

 301は「恒久的な転送」と言われているのに対し,302は「一時的な転送」と言われています.

 主な違いとしては,検索エンジンにおいて301はリダイレクト先のURL,302はリダイレクト元のURLがインデックスされる(302でリダイレクト元のURLがインデックスされることもある),301はキャッシュ登録されるのに対し,302はされないなどがあります.


 昔は302リダイレクトではPageRank(SEO評価)は引き継がれないとされていましたが,2017年にGoogle側からどちらのリダイレクトを使用してもPageRankは引き継がれると発表されています.

 また,検索エンジンがサイトの移転を認識し,SEO評価を引き継ぐのが301の方が早いとも言われています.



リダイレクトの設定方法

 301リダイレクトは.htaccessにURLを書き換えるコードを追加することで使えるようになります.

 htaccessとはWebサーバに対して様々な設定を行うファイルのことです.



 .htaccessでリダイレクトを行う方法は,mod_rewriteを使うやり方と,Redirectディレクティブを使うやり方の2種類あります.

 この2つの違いは,ApacheのモジュールでURLを書き換える機能を持つmod_rewriteを使うか使わないかです.

 サーバにmod_rewriteモジュールがインストールされていない場合は,Redirectディレクティブ(リダイレクトを指示するコード)で301リダイレクトを行うことができます.



mod_rewriteを使ったリダイレクト



 Webサイトaaa.htmlへのアクセスをbbb.htmlへリダイレクトは以下のようなコードになります.

RewriteEngine on
RewriteRule ^aaa.html$ http://example.com/bbb.html [R=301,L]

 このコードを.htaccessに追加することで,aaa.htmlへのアクセスを,http://example.com/bbb.htmlへ転送させることができます.

 ※これはaaa.htmlと.htaccessが同じディレクトリ内にある場合の書き方で,aaa.htmlが下位のディレクトリ内にある場合はディレクトリ名も記述します.
(aaa.htmlがabcディレクトリ内にある場合:^abc/aaa.html$)



 Webサーバ内のすべてのファイルを特定のページへリダイレクトさせる場合は^(.*)$を使います.

RewriteEngine On
RewriteRule ^(.*)$ http://example.com/bbb.html [R=301,L]

 これにより,.htaccessの有効範囲にある全てのファイルに対して,http://example.com/bbb.htmlへのリダイレクトを行うことができます.



 ディレクトリ単位でのリダイレクトを設定することによって,指定したディレクトリ内のファイルにのみリダイレクトを設定することもできます.

RewriteEngine on
RewriteRule ^abc(.*)$ http://example.com/bbb.html [R=301,L]

 このように記述すればディレクトリabc内のファイルにアクセスがあった際に,http://example.com/bbb.htmlへ転送するよう設定されます.



Redirectディレクティブを使った方法



 Webサイトaaa.htmlからbbb.htmlへのリダイレクトは次のコードになります.

Redirect permanent /test/aaa.html http://example.com/abc/BBB/bbb.html

 このようにRedirectディレクティブでは,

Redirect permanent リダイレクト元 リダイレクト先

という感じの構文でリダイレクトを記述します.


 リダイレクト元の部分は,ドメイン名より下位のディレクトリ構造をスラッシュ/から始めて書いていきます.

 リダイレクト先の部分は基本的に絶対パス(httpやhttpsから始まるURL)を記述しますが,リダイレクト元の書き方と同様に/から始まるディレクトリ構造で記述することも可能です.


Redirect permanent /test/aaa.html /test/abc/bbb.html

その場合リダイレクト元と同じスキーム(http://又はhttps://)・ドメイン名が追加されたことになります.


 ちなみに,Redirect permanentはRedirect 301と書くこともできます.



 下位のディレクトリ構造は同じで,ドメインだけ移転した際は以下のコードでドメインのみを変更してリダイレクトできます.

Redirect permanent / http://example.com/

 これは,ドメインより下のディレクトリ・ファイル名は保ったままで指定したドメインにリダイレクトしてくれます.

 この例では,アクセスのあったURLに対してドメイン名をexample.comに変更しています.

 例えば,domainA.comというドメインを使っている際,

http://domainA.com/test/abc/index.html

にアクセスがあった場合,このリダイレクトを設置していれば,ドメインの後に続くディレクトリ名・ファイル名の部分は変化させずに,

http://example.com/test/abc/index.html

という風にドメインの部分だけを書き換えてそこにリダイレクトさせることができます.



 特定のディレクトリを別のディレクトリへリダイレクトするには,次のようなコードを記述します.

Redirect permanent /abc/ http://example.com/ABC/

 この例では,abcディレクトリへのアクセスをhttp://example.com/ABC/へリダイレクトします.

 例えば,

http://example.com/abc/aaa/index.html

にアクセスした際,

http://example.com/ABC/aaa/index.html

にリダイレクトされます.(下層のディレクトリ・ファイル名は保ったまま)


 ※パスの書き方には注意してください.
もし,abcディレクトリが,ディレクトリbbbの下位ディレクトリである場合,

Redirect permanent /bbb/abc/ http://example.com/ABC/

のように記述しなければなりません.

 リダイレクト元の部分には,スキームとドメイン名を除いたそのディレクトリまでのパスを記述する必要があります.

プロフィール

プロフィール画像(かぼちゃの絵)

こんにちわ,弦谷(つるたに)です.

Webサイト運用に関する記事をメインであげていきます.

福岡県在住

コメントフォーム


ページTOPへ