以前、当ブログでも取り上げたのですが、プロバイダ系の無料サーバースペースや無料ブログなどで、「.htaccess」が使用できない環境下において、ページのURLを変更する際などに301リダイレクトが行えない場合には、meta refreshとcanonicalタグの併用でうまくリダイレクトが行えるという記事を書きました。(詳しくは→301リダイレクトができない場合のmeta refreshによるリダイレクトの仕方)
その後、同じ環境下で別のページにおいて、URL変更を行うことになりました。
meta refreshの秒数を0秒にすると、301リダイレクトと同じ働きをするという記事を見かけたこともあり、以前はmeta refreshの秒数を5秒にしていたのですが、今回は、0秒に設定してリダイレクトを行うことにしました。
今回の新旧のURLを以下のように仮定します。
↓
(B)http://example.com/new.html(新)
(B)のURLは、実は以前、他のコンテンツ内容で使用していたもので、すでに外部リンクがいくつか付いており、今回、そのリンクを活かしたいためにURLの変更を行ったという経緯もあります。
それはともかく、(A)の<head></head>内に以下を追加記述しました。
<link rel="canonical" href="http://example.com/new.html"> <meta http-equiv="refresh" content="0;URL=http://example.com/new.html">
上記2行を追加しただけで、その他のHTMLは新旧同じ内容です。
これは、canonicalタグを設定しているため、類似したページのままの方がいいかと思ったからです。
この状態で、新旧2つのファイルをアップロードし、リダイレクトされることを確認し、サイトマップには、旧URLを削除し新URLを記載し、Googleのウェブマスターツール上でサイトマップを再送信し、しばらく様子を見てみました。
約1週間後、パソコンで検索してみると、検索結果でまだ旧URLになったままで、新URLに置き換わっていない状態でした。
ただし、スマホで検索してみると、なぜか新URLに置き換わっていました。
この時、ウェブマスターツール上では、まだ新URLがインデックス数に含まれていない状態でした。
なおかつ、新URLには外部リンクがいくつかありますので、「サイトへのリンク」でどうなっているのか確認してみたところ、外部リンクがあるはずの新URLはまだ表示されておらず、代わりに、旧URLのページに対してリンクが付いており、以下のように中間リンクとして新URLが記載されていました。
これを見てもわかるとおり、もし新URLがインデックスされ、新旧のURLが正常に置き換わっていれば、「リンク先」に新URLが表示され、「次の中間リンクを使用」には旧URLが表示されるはずなのですが、それが逆になっていました。
この時点ではまだ、なぜ逆になっているのかわからず、しばらくすれば置き換わるものと思い、引き続き様子をみることにしました。
しかし、その後約1ヶ月経過してもこの状態は変わりませんでした。
リダイレクトは正常に行われているので、今度はcanonicalの問題かと思い、それまで<head></head>内に記述していたmeta refreshとcanonicalタグの順序を反対にしてみました。
<meta http-equiv="refresh" content="0;URL=http://example.com/new.html"> <link rel="canonical" href="http://example.com/new.html">
これは、canonicalタグがロボットに読み込まれる前にリダイレクトしてしまうためではないかと考えたからです。
しかし、1週間経過しても状態は変わらず、これも意味がなかったことがわかりました。
ようやく、meta refreshの0秒が原因ではないかと思い始め、今度はmeta refreshの秒数を5秒に設定し、旧URLのページの内容は、ページの移動をお知らせするための最小限のHTMLだけ残し、それ以外は削除しました。
つまり、冒頭の(A)と(B)のページ内容は全く異なる内容となりました。
この設定でしばらく待ったところ、早くも2日後にパソコンの検索結果でもURLが置き換わっていることが確認できました。
また、ウェブマスターツール上においても、それまで新URLがインデックスされていない状態が続いていましたが、約1週間後に無事インデックスされていました。
残るは、「サイトへのリンク」ですが、これも約2週間後に無事、「new.html」が表示されるようになりました。
以上みてきましたように、meta refreshを0に設定すると、リダイレクトはされるものの、新URLが検索エンジンにインデックスされないということを確認しました。
こうしたことからも、meta refreshでリダイレクトを行う場合には、0秒ではなく、最低でも1秒以上の秒数を指定する必要があるのではないかと思います。