SEO
301リダイレクトとは?ホームページの引越しやURL変更時のSEOのため
リダイレクトというのはご存じの方が多いかと思いますが、リダイレクトには種類があるということと、ケースによって種類を変えた方が良いということをご存じではない方も多いかと思います。
ここでは、サイトやページの評価を引き継がせるために実施すべき301リダイレクトについて、具体的な理由や、方法についてご紹介します。
リダイレクトとは?
リダイレクトは、あるページにユーザーがアクセスしたときに、別のページを表示させることを指します。「このページは10秒後に別のページが表示されます」といった表示がされているのを見たことがある方もいるのではないでしょうか?
そのケースは、そのページが引っ越したということをユーザーに明示的にしたい場合です。そのような表示もなく瞬時に切り替えられているケースもあります。
301リダイレクトとは?
301リダイレクトは、変更前のページについてGoogleから受けていた評価を、変更後のページに引き継がせたい場合に行うものです。定義的なところとしては「恒久的にURLを変更します」という宣言をするもの、ということになっています。それを宣言した結果、Googleは評価を新しいURLに引き継いでくれるということです。
302リダイレクトとは?
301リダイレクトではないものとして、302リダイレクトがあります。
302リダイレクトは一時的な転送に使います。301リダイレクトの存在を知らないままリダイレクト方法を調べてリダイレクトをすると、この302リダイレクトになってしまうリスクがあります。
実は302リダイレクトを利用するべきケースというのはほとんどないと思われます。
評価が引き継がれてはまずい、本当に一時しのぎの場合などでしょうか。長らくその状態にしていれば、元のURLにはページが存在しないので、元々あった評価は失われてしまうことになるでしょう。
301リダイレクトを行う場合の注意点
301リダイレクトは、同じ内容のページである場合に評価が引き継がれます。
関連性の低いページに対して301リダイレクトを行うのは避けましょう。サイトリニューアルの際などはある程度ページの内容が変わるかとは思いますが、同じ位置づけのページであれば301リダイレクトをして問題ないと思います。
関連性が低いページなのに、元のページの高い評価を引き継がせようとしても、それはできないということです。
301リダイレクトの効果について
以下に301リダイレクトを行った場合の効果についてご紹介します。
サイト内のページの変更の場合
サイト内のページの変更の場合、大量のページを別のディレクトリに移すなどでなければ、301リダイレクトをすればページ変更による検索順位への影響はほとんど気にしなくても良いと言えます。実際に検索順位の推移計測をして見ている私による観察結果です。
大量のページが変わり、全てのページを301リダイレクトさせなかった場合について。トップページや主要なページだけは301リダイレクトさせるようにしましょう。私はSEOに強いウェブ制作をやっているため、リニューアルでSEOに強いサイト構造にするために、サイト構造を大幅に変えることがあります。そのため、こうなるケースを多く経験しています。
結果的にどうなるかですが、リニューアルしてすぐに評価が上がってきています。なので、301リダイレクトを全てのページについてできなかった結果として落ちているであろう評価よりも、サイトの改善による効果の方が大きいという結果になっていて、悪いサイト構造のままでリニューアルした時との比較はできているわけではないので、分かりません。
次のグラフは顧客サイトなので詳しい内容は出せませんが、策定したターゲットキーワードでの検索順位をリニューアル前から計測をしていた結果です。リニューアルをした翌日からすぐに上がり始め、ある程度の順位でその後落ち着いている形です。すぐにトップ10入りとはいきませんでしたが、そういう場合は、その後の継続的なコンテンツSEOの支援をさせていただきます。
ドメインの変更の場合
ドメインの変更、すなわちサイトの引越しの場合ですが、ドメインが変わらない場合と同様、理想的には全てのページを301リダイレクトさせることが望まれます。
サイトの構造は変えずにドメインだけ変える場合は、後述の方法ですべてのページを301リダイレクトさせることは簡単です。
.htaccessファイルを利用して301リダイレクトをする方法
301リダイレクトは、.htaccessファイルに記述する方法が一般的です。ホームページのデータが置かれているサーバーに、.htaccessという名前のファイルが置かれています。そのファイルの中身を書き加えるという作業です。
エックスサーバーなどのレンタルサーバーでは、サーバーの管理画面で書き換えられるようになっています。
.htaccessファイルが編集できない環境、状況というのもあり得ます。その場合は、PHPで301リダイレクトを行うことができますので、そうするのが良いでしょう。そちらについては後述します。
まず.htaccessファイルを利用する場合の方法をご紹介します。
共通の基本の記述
Apatchというhttpsサーバーで利用されているモジュールというものがあります。.htaccessファイルでは、mod_rewriteというモジュールを利用して機能します。
mod_rewriteを利用できるかどうかの確認のため、<IfModule mod_rewrite.c>~</IfModule>
というHTMLのタグのような記述があります。
<IfModule mod_rewrite.c>
mod_rewriteが有効な場合だけ実行する処理を記述する
</IfModule>
このように書くことで、mod_rewriteが有効な場合だけ中身の処理が実行されます。そうすることでエラーになることを防ぐことができるので、基本的には書くことをおすすめします。
以下、この基本記述を必ず書く形でご提示します。なお、複数のリダイレクト処理を記述する場合、全てこのタグのようなもので挟む必要はありません。
ページが重複しているためURLの正規化を行う方法
複数のURLで同じ内容のページが存在していると、検索エンジンからの評価が分散してしまうリスクがあります。それぞれに表示したい場合はcanonicalという方法を使いますが、表示する必要がないページに対しては、表示したいページに対して301リダイレクトを行うべきです。
301リダイレクトでURLの正規化を行うべきケースとしては以下があります。
- www.の有り無しそれぞれでページが存在する場合
- index.htmlやindex.phpなど複数のファイルが存在する場合
- PCサイトとスマホサイトを別URLにしている場合
最も行われるべきなのは1つ目のwww.有無同士でのリダイレクトです。
http://www.example.com/
http://example.com/
このようにwww.の有無は、ユーザーは意識しづらいので、直接URLを入力することがあれば、間違える可能性が少なからずあるでしょう。その場合のことを考慮して、両方にページを表示するということをしてくれるレンタルサーバーがあります。
それはありがたい機能なのですが、301リダイレクトは自分で行わなければならないレンタルサーバーもあります。
wwwなしからwwwありにリダイレクト
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*) $https://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
example.com
のところを対象サイトのドメインに書き換えてください。
wwwありからwwwなしにリダイレクト
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
</IfModule>
example.com
のところを対象サイトのドメインに書き換えてください。
httpからhttpsにリダイレクトを行う方法
SSL対応をしたサイトであっても、httpでアクセスすることができてしまいますので、その場合必ずこの転送を行うべきです。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
www.有無とhttpからhttpsへのリダイレクトを同時に行う方法
wwwありで統一するかつhttpsにリダイレクト設定をする場合
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
wwwなしで統一するかつhttpsにリダイレクト設定をする場合
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [R=301,L]
</IfModule>
ドメインの変更で301リダイレクトを行う方法
サイトの構造が全て同じですべてのページリダイレクト
全ての構造を同じにした場合は、次の記述で全てのページについて、301リダイレクトが行われます。
<IfModule mod_rewrite.c>
Redirect permanent / https://www.example.com/
</IfModule>
トップページ同士のリダイレクト
ドメインを変更した場合の、トップページをリダイレクトする記述です。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example-a\.com$
RewriteRule ^(.*)$ https://www.example-b.com/$1 [R=301,L]
</IfModule>
www.example-a.com
からwww.example-b.com
に転送する場合の記述です。その部分を対象サイトのドメインに書き換えて下さい。
全てのページを新しいドメインのトップページにリダイレクト(非推奨)
これはディレクトリが大幅に変わってしまって致し方ない場合の対処です。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ https://www.example.com/
</IfModule>
ページ単位で301リダイレクトを行う方法
同じサイト内でページのURLを変更する場合、次の記述で301リダイレクトが行われます。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^xxx/$ https://www.example.com/yyy/ [R=301,L]
</IfModule>
https://www.example.com/xxx/
からhttps://www.example-b.com/yyy/
に転送する場合の記述です。
PHPで301リダイレクトを行う方法
PHPでは以下の記述で301リダイレクトを行うことができます。.htaccessファイルは、レンタルサーバーによって同じ記述でも動かないなど挙動が異なることがあります。特殊なレンタルサーバーからの乗り換えの依頼の際、何故かうまくいかなかったためこの方法を取ったことがあります。
<?php
header('Location:https://www.example.com/', true, 301);
exit;
?>
.htaccessと違って転送元のURLが書かれてないのは、転送元のURLを表示するPHPファイルにこれを記述するからです。
WordPressで301リダイレクトを行う方法
WordPressであれば、Redirectionというプラグインを用いると上述のように.htaccessを直接編集しなくても同様のことが管理画面上でできるようになります。
動作も重くなることはないので、私も活用することがあります。
まとめ
301リダイレクトはSEOの重要要素の一つと言えますね。このあたりも踏まえてサイトリニューアルを致しますので、ご相談お待ちしております。