P N R A

東京都中野区に所在を構えるウェブ制作会社PNRA DESIGN OFFICE

知っておきたい!meta,.htaccess,PHPでリダイレクトする方法

redirect-image

どーも@PNRAです!
ドラえもん作品、大好きなのですが、「ちょくちょく出口が意図しないところに繋がってるよな〜」と懐かしみながら、今日はリダイレクトのお話。

ホームページを生業にしていると、『ページの移動・削除』『ホームページの移転』といったイベントがちょくちょく発生します。その際に、再訪してくれるユーザーのために、「リダイレクト」という処理を施してページの移動を促すのですが、この「リダイレクト」は誤った方法で行ってしまうと、検索順位の低下やページランクの後退といったSEO的ペナルティを引き起こすことにもなります。そこで、今日は「リダイレクト」に関する基本的な事項を説明していきたいと思います。

リダイレクトの方法はたくさんある!

ページをリダイレクトさせる方法は実に様々!
HTMLやJavaScriptといったクライアントサイドプログラムを用いたもの。PHPPerlといったサーバサイドプログラムを用いたもの。あるいは.htaccessの設定変更を行う等々...
今回はその中でも扱いやすい、meta,.htaccess,PHPでリダイレクトする方法をレクチャーします。

metaタグによるリダイレクト

最も簡単なリダイレクト方法は任意のページのHTMLファイルのheader内に、metaタグを記入してリダイレクトを行う方法です。記述としては、以下のようになります。

<!-- meta redirect --> <header> <meta http-equiv="refresh" content="秒数(s);URL=http://www.yourownwebsite.com/"> </header>

指定方法には相対パスでURLを指定する方法と絶対パスでURLを指定する方法の2種類があります。

相対パスでURLを指定してリダイレクト

<!-- meta redirect --> <header> <meta http-equiv="refresh" content="5;URL=../first/index.html"> </header>

上記の内容では、ページを開くとmetaタグを記述したディレクトリの位置から相対位置にある「/first/index.html」に5秒後リダイレクトする仕組みになっています。

絶対パスでURLを指定してリダイレクト

<!-- meta redirect --> <header> <meta http-equiv="refresh" content="10;URL=http://www.yourownwebsite.com/"> </header>

上記の内容では、ページを開くと指定したURLに10秒後にリダイレクトする仕組みになっています。

metaタグを使ったリダイレクトは、

・プログラムを使わず、HTMLのみで実装が可能

・秒数指定ができる

といった特徴があります。

手軽に実装できる反面、デメリットもあるのでそちらも見ていきましょう。

最大の難点は、

・一部の検索エンジンで「前のドメインが持っていた情報が、新しいドメインに引き継がれない」という可能性がある

これはサイト内へのリダイレクトにおいては全く問題がないのですが、ドメインの異なるサイトへの関連性を示したい場合に非常に不利に働きます。

Yahoo!においては、metaタグによる0秒指定のリダイレクトは後述の301リダイレクト扱いになるそうですが、Googleでは.htaccessPHPなどによる301リダイレクトを推奨していることもあり、metaタグでのリダイレクトではスパム判定を受けることがあるそうです。

「前のドメインが持っていた情報が、新しいドメインに引き継がれない」というのは、「全く別のウェブサイトである」という意味合いを持ちます。
検索エンジンは各サイトに、

どのぐらい価値のあるコンテンツを提供しているのか

どのぐらい他のサイトからリンクを張られているか=被リンクがあるのか

どのぐらい長く運営されているのか

という情報をそれぞれのウェブサイトに評価としてあてており、その情報を元に表示される検索順位を決定しています。つまり、「全く別のウェブサイトである」ということは、それらの情報が完全にリセットされてしまうということであり、せっかく積み重ねてきた検索順位のアドバンテージが失われてしまうことになるのです。これによって、移転後に急激な検索順位の下落という現状が起こってしまいます。

更に、懸念すべきは検索エンジンミラーサイトとしてペナルティを受けてしまう可能性もあることです。

ミラーサイトとは、インターネット上にあるコンテンツをそのまま転用して、サイトの内容をそっくりそのまま、あるいは一部分をそのままコピーしたサイトのことを言います。ミラーサイトであるという判断を検索エンジンにされてしまうと、検索エンジンは検索結果の品質を下げないために、これらの重複コンテンツを持つウェブサイトの検索順位を下げる、最悪検索対象から除外する。といった処置を取ります。最近話題になっているバイラルメディアのコンテンツ流用などがそのいい例かと思います。

これらの理由から、metaタグによりリダイレクトはサイト移転などには不向きです。

それではどうすればいいのか?先ほどもちらりとお話した301リダイレクト、及びその他のリダイレクト方法を見ていきましょう。

リダイレクトには種類もたくさんある!

リダイレクトには、301リダイレクト、302リダイレクト、303リダイレクト…といった様々な種類のリダイレクトの形式があり、それぞれに違った意味合いが含まれています。

ここでは、代表的な301リダイレクト、302リダイレクトの2種類についてみていきたいと思います。

301リダイレクトとは?

301リダイレクトは、Moved Permanently(恒久的な移動)を意味し、完全にサイトやページが移動した、ということを表します。

これはつまり、「ウェブサイトは完全にこちらに引っ越しましたよ」というのを検索エンジンに伝えることです。これによって、正しく移転前のウェブサイトの評価を移転後のウェブサイトは引き継ぐことができ、関係性を示すことができます。また、検索エンジンは移転前のサイトへのインデックスを行うことをやめて、移転後のサイトへの巡回を行うようになります。

302リダイレクトとは?

302リダイレクトは、Moved Provisional(一時的な移動)を意味し、移転前の情報を移転後のサイトが引き継ぐことはありません。

だとすると、metaタグによるリダイレクトと同じように思われるかもしれませんが、この場合は。移転後のウェブサイトが「一時的な移動である」という情報だけは検索エンジンに伝えることができるため、ミラーサイトの認定を受けにくいことが大きな違いです。そのため、検索エンジンは移転前のサイトにインデックスし続けるため、元のサイトの評価も変わることはありません。

それでは実際に、301リダイレクト、302リダイレクトの実装方法を見ていきましょう。

.htaccessを用いた301リダイレクトの実装方法

サイト全体を.htaccessでリダイレクトさせる

.htaccessに以下の記述を行います。

<!-- .htaccess 301 redirect --> <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{http_host} ^www.yourownwebsite.com/ RewriteRule ^(.*)$ http://www.yourownwebsite02.com/$1 [R=301,L] </IfModule>

ここでは、http://www.yourownwebsite.com/からhttp://www.yourownwebsite02.com/へとリダイレクトさせてあります。

注意点として、移転前はhttp://を除き、移転後はフルパスで表記しなければいけません。

特定のページを.htaccessでリダイレクトさせる

.htaccessに以下の記述を行います。

<!-- .htaccess 301 redirect --> <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^sample.html$ http://www.yourownwebsite02.com/ [R=301,L] </IfModule>

ここでは、.htaccessと同一のフォルダにあるsample.htmlをhttp://www.yourownwebsite02.com/へとリダイレクトさせてあります。

PHPを用いた301リダイレクトの実装方法

PHPファイルの<header>内に以下の記述を行います。

<!-- PHP 301 redirect --> <?php header('Location: http://www.yourownwebsite02.com/', true, 301); exit(); ?>

これで、<header>内に上記を含むページの場合、http://www.yourownwebsite02.com/へとリダイレクトさせることが可能です。

.htaccessを用いた302リダイレクトの実装方法

サイト全体を.htaccessでリダイレクトさせる

.htaccessに以下の記述を行います。

<!-- .htaccess 302 redirect --> <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{http_host} ^www.yourownwebsite.com/ RewriteRule ^(.*)$ http://www.yourownwebsite02.com/$1 [R=302,L] </IfModule>

ここでは、http://www.yourownwebsite.com/からhttp://www.yourownwebsite02.com/へとリダイレクトさせてあります。

注意点として、移転前はhttp://を除き、移転後はフルパスで表記しなければいけません。

特定のページを.htaccessでリダイレクトさせる

.htaccessに以下の記述を行います。

<!-- .htaccess 302 redirect --> <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^sample.html$ http://www.yourownwebsite02.com/ [R=302,L] </IfModule>

ここでは、.htaccessと同一のフォルダにあるsample.htmlをhttp://www.yourownwebsite02.com/へとリダイレクトさせてあります。

PHPを用いた302リダイレクトの実装方法

PHPファイルの<header>内に以下の記述を行います。

<!-- PHP 301 redirect --> <?php header('Location: http://www.yourownwebsite02.com/', true, 302); exit(); ?>

これで、<header>内に上記を含むページの場合、http://www.yourownwebsite02.com/へとリダイレクトさせることが可能です。

301リダイレクトと302リダイレクトは、コードを記載する際の数字部分を書き換えてあげるだけなので、用途に応じて使い分けてあげましょう。

こんなところでしょうか。
ちょっと長くなってしまいましたが、リダイレクトの実装方法はノンプログラマーでもできる内容となっておりますので、これを機に是非お試しください!
それではまた次回( ´•౪•`)

Siyabonga ekufundeni kwakho.(訳:最後まで読んでくれてありがとう。 / 注:ズールー語)