リダイレクトとは?種類や設定方法。301や302、.htaccessなどについて

リダイレクトとは?種類や設定方法。301や302、htaccessなどについて

WebサイトやブログのURLが変わった時や、今いるページから別のページへユーザーを転送したい場合は、リダイレクトの設定をする必要があります。

今回はWebサイトのリダイレクトの種類や設定方法について説明します。

目次

リダイレクトとは

そもそもリダイレクトとは何か?についてから説明します。

リダイレクトとはWebページに訪問してきたユーザーを、別のページに自動的に転送することを言います。主にWebサイトのドメイン(URL)が変更になった時に、古いURLに訪問してきたユーザーを、新しいURLに自動的に転送したい時にリダイレクトがよく使われます。

その他の事例として、会員登録が必要なサイトで、会員登録完了ページが表示された5秒後に自動的にトップページに遷移したりなど、さまざまな場面でリダイレクト処理は利用されています。

リダイレクトの種類

リダイレクトにもいくつか種類があり、目的に応じてリダイレクトのやり方を変える必要があります。

301リダイレクト

301リダイレクトとは、古いURLから新しいURLに変更になった場合に、主に設定されるリダイレクト方法で、URLが恒久的(こうきゅうてき)に転送することを意味するステータスです。つまり301リダイレクトさせると、永久的に完全にURLを転送させることができます。

301リダイレクトのメリット

301リダイレクトを設定すると、Googleの検索アルゴリズムに、古いURLについた被リンクやドメイン評価を新しいURLに引き継いだことを知らせることができ、検索順位に影響が少ない状態でURLの移行をすることができます。

302リダイレクト

302リダイレクトも古いURLから新しいURLに変更になった場合に、主に設定されるリダイレクト方法ですが、301リダイレクトはURLを完全に移行させたい時に設定する方法に対して、302リダイレクトはURLを一時的に転送することを意味するステータスです。つまり永続的に新しいURLに完全移行するとも言えない場合に302リダイレクトを設定します。

302リダイレクトのメリット

302リダイレクトは、古いURLについた被リンクやドメインの評価を新しいURLに引き継がれません。ですので302リダイレクトを使用するメリットは正直あまりありません。一般的にURLについた被リンクやドメインの評価を新しいURLに引き継がれた方が良いので、通常は301リダイレクトを設定することをおすすめします。

続いて具体的にリダイレクトをさせるにはどうのような設定方法があるのか説明します。

.htaccessでのリダイレクト

代表的なリダイレクト方法は.htaccessファイルを使ったリダイレクト方法です。.htaccessによるリダイレクトは、サーバーサイド側で行うリダイレクト方法で、301リダイレクトを適用することができ、Googleも.htaccessでのリダイレクト方法を推奨しています。

ただし.htaccessによるリダイレクトを設定するには条件があり、.htaccessが使用できるサーバーであること、Apache(アパッチ)というWebサーバーであること、mod_Rewriteが使用できるサーバーであることが条件です。

設定方法は、メモ帳やテキストエディタなどで、新規ファイルを作成し、ファイル名を「.htaccess」というファイル名にし保存します。続いてファイルにコードを書いていきますが、リダイレクトの目的に応じて記述方法が異なります。ここではページ単位とディレクトリ単位での記述方法を説明します。

ページ単位でのリダイレクトの記述方法

RewriteEngine on
RewriteRule ^old.html$ https://www.new.com/new.html [L,R=301]

例えば、「old.html」から「new.html」にリダイレクトさせたい場合は上記にように記述します。

ディレクトリ単位でのリダイレクトの記述方法

RewriteEngine on
RewriteRule ^old(.*)$ /new$1 [L,R=301]

例えば、oldディレクトリからnewディレクトリにリダイレクトさせたい場合は上記のように記述します。

PHPでのリダイレクトのやり方

通常は.htaccessによるリダイレクト方法を推奨しますが、.htaccessファイルが使えない場合など、PHPでもリダイレクトをさせる方法があります。

<?php
$url = 'https://www.new.com/';
header('Location: ' . $url, true, 301);
exit;

JavaScriptでのリダイレクトのやり方

.htaccessやPHPを使ったサーバーサイド側でのリダイレクトができない場合は、フロントサイド側でJavaScriptを使ったリダイレクト方法があります。

setTimeout('redirect()', 0); //秒数を設定できます。
function redirect(){
location.href='https://(new.html)';
}

しかしJavaScriptで行うリダイレクトでは、古いURLについたドメイン評価を新しいURLに正常に引き継げない可能性が高いので、あまりおすすめしません。

HTMLのmeta refreshでのリダイレクトのやり方

ドメイン評価の引き継ぎなどは気にせずに、ただ単に別のページに手軽にリダイレクトさせたい場合はHTMLのmeta refreshを使った方法もあります。

<meta https-equiv="refresh" content="0;URL=https://www.new.com/">

HTMLでのリダイレクトはW3CやGoogleから使わないように推奨されていますので、.htaccessもPHPもJavaScriptでのリダイレクトができない場合の、苦肉の策で使用しましょう。

まとめ

リダイレクトの種類や設定方法について説明しましたが、Webサイトの目的に応じて使い方を判断して設定してみてください。

リダイレクトのおすすめの設定方法はGoogleも推奨している.htaccessによるリダイレクトですが、それができない場合は、別のやり方も検討して適切に設定しましょう。

目次