301リダイレクトができない場合のmeta refreshによるリダイレクトの仕方

今回、すでに公開しているサイトの中の1ページのファイル名を変更する必要が出てきました。

http://example.com/abc.html → http://example.com/def.html
といったようにです。

こうした場合、普通であれば、それまでのhttp://example.com/abc.htmlへのリンク情報やページランクなどを引き継ぐことのできる301リダイレクトで旧urlから新urlに転送を行うのが通常かと思います。

そうしたいところなのですが、今回の対象となるサイトのサーバーでは、301リダイレクトの設定で不可欠な「.htaccess」が使用できない仕様になっているのです。

今どき、そんなサーバーがあるのかと思われるかもしれませんが、プロバイダ系の無料サーバーを使用しており、そうしたサーバーでは「.htaccess」が使用できない場合があったりします。

今回、そうした制約もあり、また、旧urlは公開してからそれほど経過しておらず、ページランクもついていないこと、そして、被リンクも無いことから、転送方法として、metaタグによるリダイレクトを行うことにしました。

旧urlに対するGoogleの評価を引き継ぐ必要がないのであれば、リダイレクトを行わなくても単純にサーバーから旧urlのファイルを削除し、新urlのファイルをアップロードすればよいのでは?と思われるかもしれません。

しかし、旧urlはすでにgoogleの検索結果の1ページ目に表示されており、せっかく訪問してきてくれる方のアクセスを中断したくないために、旧urlから新urlに自然に置き換わるまでの間だけリダイレクトを行うことにしました。

以下、手順を覚書として掲載いたします。

1、旧urlファイルのmetaタグによるリダイレクトの設定

旧urlファイルの~タグ内に、以下metaタグを記入します。

<meta http-equiv="refresh" content="5;URL=http://新URL">

「content=”5」の「5」という数字は、リダイレクトされるまでの秒数で、この場合、5秒後に新しいurlにリダイレクトされるという意味です。

2、旧urlファイル内容の改変

今回、新旧のファイルの中身は同じで、ファイル名(url)のみ変更するので、このままではGoogleの方に同じ内容のページが2つインデックスされてしまい、重複ページのペナルティを受けてしまう可能性があります。

canonicalタグで新urlに正規化しておくという方法もありますが、なにより、訪問者に対しurlを変更したということ、そして、新urlにリダイレクトされるということを伝えた方が、ユーザビリティの観点からもいいかと思いますので、旧urlファイルの内容を以下のように改変します。

あくまで最小限の一例です。(html5)

内容はご自身のご判断で改変ください。

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="UTF-8">
	<title>お知らせ</title>
	<meta http-equiv="refresh" content="5;URL=http://example.com/def.html">
</head>

<body>
<p>このページのURLを変更しました。<br>
変更後のURLへは5秒後にジャンプします。<br>
ジャンプしない場合は、下記のURLをクリックしてください。<br>
↓<br>
変更後のURL<a href="http://example.com/def.html">http://example.com/def.html</a></p>
</body>
</html>

3、新旧urlファイルのアップロード

内容を改編した旧urlファイルと新urlファイルをサーバーにアップロードします。

アップロード後、ちゃんと動作するか確認します。

正しく動作すれば、旧urlを表示させると上記例の場合、5秒後に新しいページにリダイレクトされるはずです。

以上の作業を行ったところ、2~3日ほどでGoogleの検索結果において、旧ページが新しいページに置き換わっていました。