にしし ふぁくとりー(西村文宏 個人サイト)

Presented by Nishishi via Movable Type. Last Updated: 2015/09/22. 13:23:51.

移転したことを検索エンジンに伝えるには

ウェブサイトを移転したときは、移転した事実を検索エンジンにも知らせて、早く移転先ページをデータベースに登録して欲しいですよね。ウェブサイトを「移転した」という事実を検索エンジンに伝えるには、移転先への「リダイレクト」が必要です。「新しいURLはこちら」みたいなリンクを用意しておくだけでは、「別のサイトへリンクを張ってる」と解釈されるだけで、「移転した」とは解釈されないため、延々と旧サイトが検索結果に出続けることになります。

というわけで、「移転した」事実を検索エンジンに伝えるには、リダイレクトを行う必要があります。

リダイレクトを設定している場合、どちらのURLがデータベースに登録されますか?(@Yahoo!検索 サイト管理者向けヘルプ)

Yahoo!のヘルプによると、リダイレクトの方法として、次の2つが有効のようです。

  • HTTPステータスコードで301または302を返す
  • HTML中にmeta要素を使ってリダイレクトさせる

スマートなのは、HTTPレスポンスヘッダで「301 Moved Permanently」を返す方法です。これだと、アクセス者は移転した事実にほとんど気づかず一瞬で移転先に移動できます。ブラウザの履歴には旧サイト側のURLは残りません。

無料スペースなど、自由にHTTPステータスコードを返せない場合は、HTML中にリダイレクト用のmetaタグを書いておく方法も使えます。

<meta http-equiv="refresh" content="0;URL=リンク先">

…みたいな感じで。上記の場合は、待ち時間は「0」秒なので一瞬で移動します。

で、このとき注意が必要な点が1つあります。

まったく異なるドメインへ移転した場合は、とにかくリダイレクトさえしていれば、検索エンジンのデータベースには、そのうち新しいURLのみが登録されるようになります。(少なくともYahoo!の場合)

でも、同一ドメイン内でディレクトリ構造だけ移転した場合、リダイレクトのさせ方によっては、いつまで経っても元のURLが登録されたまま、一向に新URLが登録されない可能性があります。上記のYahoo!ヘルプを読むと分かることなんですが。

HTTPステータスコードで、301は「永久的な移転」を示します。302は「一時的な移転」を示します。Yahoo!では、metaタグを使ったリダイレクトの場合、リダイレクト処理を開始するまでの時間を0秒にした場合は301として解釈し、一定時間空けている場合は302として解釈するようです。

で、移転先が異なるドメインの場合は、301でも302でも、新しい移転先のURLが登録(更新)されます。でも、移転先が、同一ドメイン内の異なるディレクトリだった場合、301と302で挙動が異なります。

移転先が同一ドメイン内の場合、301(永久的な移転)を返せば新URLが登録され、302(一時的な移転)を返せば元URLのまま…ということになるようです。まあ、これはとても妥当ですよね。「一時的な移転」って言ってんだから、データベースを書き換える必要はないわけです。

# 自動移動までに一定時間あいている場合は「一時的な移転」だと解釈することが妥当かどうかは別の話ですけど。

つまり、(移転先が同一ドメイン内の場合で)metaタグを使ってリダイレクトさせる場合、リダイレクト処理が開始されるまでの時間として、必ず「0秒」を指定しておかないと「永久的な移転」とは解釈されないので、いつまで経っても、元のURLが登録されたまま(=移転した事実がデータベースに反映されない)ということになりそうです。

ウェブサイトを移転したときに、「移転しましたよ。新URLはこっちですよ。リンクを貼り替えて欲しいので自動的には移転させません。」とか、「移転しましたよ。10秒後に移転先に自動移動しますよ。」というような案内表示をよく見かけます。でも、これらの案内には、検索エンジンに対して移転した事実を伝えるという点で、マズい可能性がありますね。

まず、「自動的には移動しない(=リダイレクトさせない)場合」、これはもう確実に移転だとは認識されないでしょう。リダイレクトは必要ですね。(新URLは新URLで、「別のウェブサイト」として検索サイトのデータベースには登録されるでしょうが。)

で、問題は「10秒後に自動移動」とかにした場合。
この場合、移転先が「異なるドメイン」だったら問題はありません。0秒で移動させようが10秒で移動させようが(=HTTPステータスコードで301を返そうが302を返そうが)、移転先がデータベースに登録されます。
でも!
移転先が、同一ドメイン内の異なるディレクトリとかだった場合は、「10秒後に自動移動」というリダイレクトでは、「一時的な移転」として解釈され、いつまで経っても新URLにデータベースは書き変わらないことになります。

もちろん、リンクしてる以上、新URLもそのうちデータベースには登録されるでしょうが、「移転」と解釈されないので、ページの評価値(リンクポピュラリティとかいろいろ)が引き継がれないような気がします。(そこまではYahoo!のヘルプには書かれてないけど。)

これでは困りますよね。

だから、同一ドメイン内で移転する場合には、HTTPステータスコードで301を返すか、もしくはmetaタグを使ったリダイレクトなら、「0秒」でリダイレクトさせる必要があるような気がします。

Yahoo!のヘルプにそうあるだけなので、Googleとか他の検索エンジンではまた挙動が異なるかも知れませんが。(日本国内ではYahoo!のシェアがかなり高いので、Yahoo!の考え方も知っておいた方がいいでしょう。)

# 今、すんごく眠いので(^^;)、もしかしたら読み違えてるかも。^^;;;

コメント

"refresh"ですね。

投稿者 栗先生 : 2006年06月07日 16:14

ご指摘ありがとうございます。(^^;)
refleshではなく、refreshですね。^^;;;
修正しておきました。

投稿者 にしし : 2006年06月07日 17:14

コメント数: 2件

コメント投稿欄 この日記に対するコメント投稿を歓迎します。

保存しますか?



※本文中にURLは書けません。(書くと投稿が拒否されますのでご注意下さい。)

※投稿内容は、実際にページ上に掲載される前に、管理者によって確認される設定にしている場合があります。その場合は、投稿後にその旨が表示されます。たいてい1~2日以内には表示されるはずですので、気長にお待ち願います。m(_ _)m

トラックバック

このエントリーへのトラックバックURLを表示するにはここをクリック
※スパム防止のため、トラックバックURLは別ウインドウで表示します。(JavaScriptが有効でないと表示されません。)

--- 当サイト内を検索 ---