サーバー側でリダイレクトできないときの設定方法を解説
.htaccessとは、Webサーバーの動作を制御するための設定ファイルのことで、主にリダイレクトを行う際に用いられます。しかし、サーバーの設定によっては利用できないというケースも多々あります。
今回は、リダイレクトをするに当たり、.htaccessが利用できるケースと、サーバーサイドのリダイレクトが設定できない時の対応方法について、詳しく解説していきます。
なお「仕様でリダイレクトできない」「正しく設定したはずなのに、リダイレクトが効かない」などお困りの方は、ナイルにサクッと相談してみませんか?
SEO対策の悩みをプロに相談してみませんか? SEOやWebマーケティングの悩みがありましたら、お気軽にナイルの無料相談をご利用ください!資料では、ナイルのSEO支援実績(事例)、コンサルティングの方針や進め方、費用の目安といった情報をご紹介しています。あわせてご覧ください。
「ナイルのSEO相談室」は業界歴15年超のナイルが運営しているメディアです。SEOの最新情報を随時発信しているので、ぜひブックマークしてください!
またSEOにお悩みの方は無料相談やSEOコンサルティングサービスのご利用もぜひご検討ください!
目次
リダイレクトする理由
SEO対策をしていく上で、リダイレクト(転送)という言葉を聞いたことがあるかと思います。まずは実際にどういった場合にリダイレクトを行うかをおさらいしましょう。リダイレクトを行うのは例えば以下のような場合です。
- WebサイトのURLを変更した場合
- URLを正規化する場合
簡単にそれぞれについてリダイレクトを行う理由を解説します。
WebサイトのURLを変更した場合
ドメインを変更する場合や、同じドメインでディレクトリやファイルを変える場合など、URLが変わった場合のことです。この場合、以下のような理由でリダイレクトを行います。
- 旧URLにアクセスしたユーザーやクローラーが正しいURLにアクセスできるようにする
- 旧URLから検索エンジンの評価を受け継ぎ
-
- 正規化の場合
例えばwwwの有無や、index.html・index.php等の有無のURLが存在する場合です。検索エンジンは、WebサイトをURL単位で評価するため、wwwの有無など複数のURLが存在していると、正しい評価が得られない可能性があります。そこで、その分散したURLを1つにすることを正規化と呼びます。この正規化にリダイレクトが用いられていました。
ただし、現在のGoogleは非常に優秀なために、こういったページ群は重複ページであると自動で判定し正規ページを認識してくれるために、リダイレクトの正規化処理の重要度は低くなってきています。
リダイレクトの種類
よく利用されるリダイレクトには、「301リダイレクト」と「302リダイレクト」の2種類があります。
301リダイレクトは恒久的なページの移転を表し、ページを引っ越した際には301リダイレクトを使用します。一方、302リダイレクトは「一時的な移転」を意味するため、検索エンジンが定期的に古いWebサイトに訪れます。
302リダイレクトが利用されるケースは、サイトのリニューアルにおける本番実装やメンテナンス中において、一時的に準備中を説明するページへユーザーを遷移させる際、ABテストの実施時などが挙げられます。
\もしサイトリニューアル対応中であれば、こちらも参考にしてください!/
サーバーサイドリダイレクトを有効にする方法
通常、リダイレクトは、Webサーバーの設定で行います。Apacheの場合、.htaccessというファイルを、nginxの場合は、nginx.confというファイルを利用して設定します。なお、IISの場合は、ウィザードに従えば設定が行うことが可能です。
.htaccessの例
http://www.hoge.com/のURLで、www有り、index.htmlなしに正規化する例です。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^hoge\.com
RewriteRule (.*) http://www.hoge.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.hoge.com/$1 [R=301,L]
Apacheでは、この.htaccessが利用できなくなっている場合や、また、.htaccessは利用できるのものの、リダイレクトが利用できなくなっている場合があります。その場合は、Apacheの設定ファイルhttpd.confの設定を変えることで、.htaccessが使用できるようになります。
このhttpd.confというファイルのAllowOverrideという項目をAllにします。
AllowOverride All
また、RewriteEngineを利用するには、mod_rewriteというモジュールを有効化する必要があります。同じhttpd.confの
LoadModule rewrite_module modules/mod_rewrite.so
という行が#でコメントアウトされていないかご確認ください。
なお、httpd.confの設定を変えた場合、Apacheを再起動する必要があるので注意です。
これらの設定は、サーバーのroot権限がないと、設定出来ません。専有サーバーやVPS等の一部を除き、共用サーバーをご利用の場合は、設定ができない場合が多いので、サーバーの管理者などに確認されることをおすすめします。
サーバーサイドリダイレクトが使用できない時には
リダイレクトは、.htaccess等サーバー側の設定で行うことが理想ですが、サーバーの仕様やCMSの仕様などで、リダイレクトが使用できない場合があると思います。その代替案をいくつか紹介したいと思います。
PHP等プログラムによる対応
PHPなどのプログラムでも301リダイレクトを行うことが可能です。プログラムで指定しているため、個別に設定する必要がありますが、SEO上、サーバー側での設定と同じ結果が得られます。つきましては、サーバーサイドリダイレクトが行えない場合、最も優先度が高くなります。
PHPの場合の設定例
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.hoge.com");
exit();
?>
Ruby on Railsの場合の設定例
redirect_to “http://www.hoge.com”, :status => 301
サーバー側での設定と同じ効果が得られるということで優先度は最も高くなります。
JavaScriptによる設定
JavaScriptも、location.hrefやlocation.replaceといった関数を用いることで、リダイレクトを使用することが可能です。
Googleの検索エンジンは、JavaScriptのリダイレクトをサーバーサイドリダイレクトとほぼ同等に処理することできますが、その他の検索エンジンでは上手くリダイレクトされない可能性があるため注意が必要です。
meta refresh
metaタグのタグの1つで、meta refreshというものがあります。これを用いると指定した秒数後に、指定したURLにリダイレクトされます。サーバーでのリダイレクトが技術上難しい場合に活用しましょう。0秒を指定することで、瞬間的にリダイレクトされるようになります。
meta refreshの使用例
<meta http-equiv="refresh"content="0;URL=http://www.hoge.com">
クライアントサイドリダイレクトの一種であり、検索エンジンの処理に時間がかかるため、優先度はリダイレクトの中で最も低くなります。
rel=”canonical”
rel=”canonical”とは、類似したコンテンツを持つ複数のURLの中から、検索エンジンに優先させるページを伝えるためのものです。このcanonicalで、リダイレクト先のURLを指定します。こうすることで、検索エンジンに対し、「優先すべきURLはこっちですよ」と示すことができます。
rel=”canonical”の記述例
<link rel="canonical" href="http://www.hoge.com" />
ただし、rel=”canonical”は、あくまでもGoogleへの提案として扱われます。したがって、必ずしも、検索結果がcanonicalの設定通りになるわけではなので、注意が必要です。また、そもそもリダイレクトではないため、各種リダイレクトが一切使用できないという場合に使用しましょう。
まとめ
- リダイレクトは、極力.htaccessなど、サーバーの設定で行うことが理想。
- .htaccessは、無効になっている場合があるので注意。
- リダイレクトが行えない場合はPHP等のプログラムでリダイレクトさせる。
ナイルでは、それぞれの企業の商品・サービスに合致した顧客を集客することを目的に、SEOコンサルティングを行っています。すべてSEO施策を依頼することだけではなく、自社でSEOを実施するインハウスSEOに向かうためのサポートも可能です。ぜひ一度、ご相談ください。
集客・コンバージョン数を増やしたい方へ
関連記事