301リダイレクトが使えないときの転送方法

ドメインを移転するときには、301リダイレクトを使うのが鉄則です。

しかし、何らかの事情で301リダイレクトが使えないときは、どうしたらいいのでしょう。

301の代替手段として使えるのは、meta refreshです。

meta refreshは、指定した秒数が経過した後、指定したURLへ自動転送することができるHTMLコードで、headセクションに次のように記述します。

<meta http-equiv="refresh" content="●;URL=http://...">
※「●」は秒数

検索エンジンは、指定する秒数を「0」秒にすることで、301リダイレクトとして処理してくれるようです。

Yahoo!は、インフォセンターで以下のように説明しています。

●には、転送元から転送先にリダイレクトする場合に要する時間を秒数で記述します。この値を「0」とした場合、YSTは301リダイレクト(永久的なリダイレクト)、「0」以外の値を指定した場合には、302リダイレクト(一時的なリダイレクト)と扱います。

Googleはヘルプには記載されていませんが、2007年9月4日のGoogle Webmaster Help(当時はGoogle Groups)でメンバーが、Googleの社員Adam Lasnik(アダム・ラズニック)氏の発言を引用しています。

[The] best idea is to use 301/302s directly whenever possible;
otherwise, next best is to do a metarefresh with 0 for a 301. I don’t believe we recommend or support any 302-alternative.


“最善なのは可能な限り301か302を使うことだ。そうでなければ、次善の策として、301の代わりとして0のmeta refreshを使う。302の代用となる方法の推奨やサポートはしていないはずだ”

Yahoo!は、0以外の数字ならば302リダイレクト扱いのようですが、Googleは、meta refreshで302リダイレクトの代用はできないようです。

実行した人のコメントを見ると、一応301リダイレクトとして処理してくれているようです。

でも、実際やるとなると不安ですね。
301が使えるなら、絶対的に301を勧めます。

ただ無料で借りているホームページスペースや無料ブログは、.htaccessやPHPなど301リダイレクトを使える環境でない場合がほとんどでしょう。

そういったサイトから転送するときには、使わざるを得ません。

それにしてもすべてのページでmeta refreshを設定するのは、ページ数が多いと大変です。
テンプレートに記述したら、すべて同じページに飛んでしまいますから、個別に設定しなければなりません。

また、meta refreshの即時転送はスパム行為にも非常に頻繁に利用されるので、多用するとペナルティを受ける危険もありそうです。

とはいうものの、301リダイレクトの代用として「0秒のmeta refresh」が利用できることは知っておいていいでしょう。