要注意!htaccessでリダイレクトする際の記述方法

ホームページのリニューアルやURLの変更の際に必要な作業となるのが本日のブログのテーマである「リダイレクト」。

これまでのURLから新しいページに遷移させたい場合には、このリダイレクトの処理を入れる必要があります。

SEOの観点からも重要な処理となるため覚えておきたい知識のひとつであるリダイレクト処理は、通常「.htaccess」への記述が一般的ですが、WordPressのfuctions.phpやプラグインでも設定できたりします。

今回は.htaccessへの記述方法をメインとして、それ以外の方法も合わせてご紹介したいと思います。

簡単に基礎知識をおさらい

リダイレクト処理のコードをご紹介する前に、要リダイレクト処理に関する基礎知識を簡単におさらい。

Web制作に携わる人間にとって、よく目にするのが「301」や「404」という数字。
Web制作以外の方でも、インターネット利用している中で下の画像のような表示を見かけたことがある人はいるかと思います。

こんな感じの画面、目にしたことがありますよね。
これがいわゆる「404エラー」のレスポンスがサーバーから返ってきた状態です。

簡単に言うと「アクセスしたURLが見つかりません」というサーバーからのお返事。

404ってどういう意味??という感じですが、この数字は「HTTPステータスコード」と呼ばれるものです。
簡単に言うとWebサーバからのレスポンスを3桁の数字コードで表したもの。

100番台~500番台でクライアントエラーやサーバーエラーなどのエラー内容に番号が割り振られています。

(様々な数字コードがありますが、各数字コードについての詳しい説明については今回は割愛。気になる方は「HTTPステータスコード」で検索してみてください。)

SEOの観点も含めて、こうしたエラーを避けるために別のページ(新URLなど)に自動的に遷移させるリダイレクト処理が必要となってきます。

404リダイレクト処理

画像の例は既存のホームページのドメインは変更せずサイトマップを精査した想定。
リニューアル後のホームページにはcampaign.htmlに代わるページがないため、404リダイレクト処理が必要になりました。さっそくコードを書いていきましょう。

.htaccessへの記述方法

ErrorDocument 404 http://old-site.co.jp/

上のコードの中で、「http://old-site.co.jp/」の部分にはリダイレクト先のURLを記述してください。
今回の例では、存在しないcampaign.htmlにアクセスした場合はサイトトップにリダイレクトするイメージですね。

404エラー時用のオリジナルページを作成し、リダイレクト先をそのページに指定したい場合も指定方法は同じ。

「404.html」「404.php」など、404エラーが返ってきた際に表示したいページを作成し、.htaccessに以下の通り記述します。

ErrorDocument 404 /404.html

301リダイレクト処理

404リダイレクトは、すでに存在しないページへアクセスした場合の処理でした。

301リダイレクトはそれとは異なり、ページやサイトのURLが変更になった場合に必要な処理となります。

301リダイレクト処理を行わない場合、変更後のページにこれまでのGoogleからの評価が引き継げなくなってしまいます。

全く新しいページを公開した状態と同じになるため、これまで検索エンジンで上位ヒットしていたとしてもイチからやりなおし…という状態になってしまうわけです。

301リダイレクトはユーザーがアクセスするドメインを統一(URLを正規化)する処理も行えるので、アクセスが分散してしまうのを防ぐこともできます。

ページ全体をリダイレクト

旧ホームページのどのページにアクセスしても、新ホームページのトップに一括して遷移するようにする処理方法です。

Redirect permanent / http://new-site.co.jp/

任意のページのみリダイレクト

先ほどの処理とは違い、ページ単位でリダイレクト先を指定する方法。
ページの内容自体は一緒だけどドメインやファイル名が変更になった(=リニューアル前後でURLが異なる)という場合はこちらを使いましょう。

RewriteRule  https://old-site.co.jp/▲▲▲.html $ http://new-site.co.jp/▲▲▲.html [R=301,L]

302リダイレクト処理

先ほどは301リダイレクト処理の説明でしたが、お次は302リダイレクトについて。

「301と302って何が違うの?」という方のために簡単に説明すると、「恒久的な転送か一時的な転送か」という違いです。
と言っても具体的にピンと来ない方もいるかもしれないので、もう少しわかりやすく説明します。

301はリダイレクト前のページの評価を受け継ぎつつ、「リダイレクト先のURL」をその後Googleが評価するようになります。

それに対して302はリダイレクト前のページの評価を受け継ぎつつ、一時的にページを変えているだけなのでそのまま「リダイレクト元のURL」が評価され続けるイメージ。

301はホームページのリニューアルを行った際など、継続的に新しいURLにリダイレクトする必要がある場合などに使用します。

例えばホームページのメンテナンス期間だけ「メンテナンス中です」のページを表示させたい場合など、 数日~1週間程度でURLをすぐ戻す予定がある場合などは302リダイレクを使用しましょう。
※ Googleが評価先のページを反映するには2週間~3週間程度かかるといわれています。 もし2~3週間以上リダイレクトさせる必要があるページについては、301を使用してもOKです。

そして302リダイレクト処理の際の記述はこちら。

RewriteRule  https://old-site.co.jp/▲▲▲.html $ http://new-site.co.jp/▲▲▲.html [R=302,L]

違いは末尾の[R=●●,L]の部分。
恒久的なリダイレクト処理にしたい場合は [R=301,L]、一時的なリダイレクト処理にしたい場合は [R=302,L] と記述するようにしましょう。

番外編:WPでサイトを構築してる場合のいろいろ

WordPressでホームページを制作してい場合は、.htaccess以外にも

  • functions.php
  • プラグイン

などでリダイレクト処理を行うことができます。
今回は番外編として簡単にご紹介。

functions.phpへの記述方法

<?php
function is404_redirect()
{
  if (is_404()) {
    wp_safe_redirect(home_url('/'));
    exit();
  }
}
add_action('template_redirect', 'is404_redirect');
?>

4行目で「もし404だったらサイトトップ(⇒ home_url(‘/’) )にリダイレクトしてください」という内容の命令が記述されています。

WordPressではリダイレクト設定のためのプラグインもある

リダイレクト設定が行える「Redirection」というプラグインがありますので、参考までに合わせてご紹介したいと思います。

試しにインストールして設定画面を触ってみましたが、各ページのリダイレクト処理や404ページの設定などが可能で、設定もそれほど難しくないようでした。

こうしたプラグインの活用も選択肢のひとつにはなりそうですね。

まとめ

最後に、それぞれリダイレクトが不要・必要な条件について以下にまとめました。

今回はWeb制作に携わる人にとっては基礎的な部分にはなるかと思いますが、その分SEO等サイト制作・運用などにも大きく関わってくる部分。

サイトやページのドメイン変更の際には必ずと言っていいほど対応することになるかと思いますので、記述方法をしっかりとマスタ―していきましょう!