サーバー側でリダイレクトできないときの設定方法を解説

更新日: 公開日:

.htaccessとは、Webサーバーの動作を制御するための設定ファイルのことで、主にリダイレクトを行う際に用いられます。しかし、サーバーの設定によっては利用できないというケースも多々あります。

今回は、リダイレクトをするに当たり、.htaccessが利用できるケースと、サーバーサイドのリダイレクトが設定できない時の対応方法について、詳しく解説していきます。

リダイレクトする理由

SEO対策をしていく上で、リダイレクト(転送)という言葉を聞いたことがあるかと思います。まずは実際にどういった場合にリダイレクトを行うかをおさらいしましょう。リダイレクトを行うのは例えば以下のような場合です。

  • WebサイトのURLを変更した場合
  • URLを正規化する場合

簡単にそれぞれについてリダイレクトを行う理由を解説します。

WebサイトのURLを変更した場合

URLの変更の例

ドメインを変更する場合や、同じドメインでディレクトリやファイルを変える場合など、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の疑問がある場合は、ぜひご相談ください!/

関連記事

相互リンクとは?SEOへの効果の有無とペナルティリスクについて

相互リンクとは?SEOへの効果の有無とペナルティリスクについて

パーマリンクとは?SEOへの影響や注意点について解説

非エンジニア向けSSL解説:OpenSSLの脆弱性「HeartBleed」とは?

新着記事

マーケティング 集客

集客はマーケティングの1つ!押さえておきたい4つのポイントを紹介

ウェブ集客

ゼロからわかる!ウェブ集客の方法やメリット・デメリットを解説

リスティング広告

リスティング広告の6つのメリット・5つのデメリットを解説

サイト内検索