2012-03-05

Djangoで404を返してrobots.txtをうまく制御する方法

グーグルなどの検索エンジンの検索結果に自分のサイトを表示させたくない場合、robots.txtを設置してインデックスさせないようにします。

Djangoで作ったサイトの場合、このrobots.txtをうまく処理しないと、サイト内のページがうまくインデックスされない可能性があります。

検索結果に表示させたくない場合には、特にrobots.txtを設置する必要はありません。グーグルはrobots.txtが存在しないと(404)検索結果に表示してよいものとして、ページをインデックスします。

フレームワークなどを使わない通常のサイトの場合、robots.txtなんて知らなくて放置していたとすれば、404を返しますので、グーグルはインデックスを開始します。

しかし、Djangoを使ってサイトを運営している場合、robots.txtの処理をしないとurlのパターンにマッチしませんので、500エラーを返します。

グーグルは、404エラーの場合には、うまく処理してくれるのですが、500エラーの場合、処理がうまくいかない場合があり、サイト内のページが全くインデックスされない状態になる事があります。

私のサイトは実際にインデックスされませんでした。

ということで、Djangoでサイトを作った場合には、robots.txtの処理をきちんとしましょう。具体的には、robots.txtにマッチするようにして404を返すようにすればいいだけです。

urls.pyに以下のようき記述します。

    (r'^robots.txt$', robots), # robotsの部分の名前は何でもOK.

そして、以下のような関数を記述して404を返します。

from django.http import HttpResponseNotFound
def robots(request):
    return HttpResponseNotFound('<html><head><title>404</title></head><body><h1>Page not found</h1></body></html>')


wgetで確認すると、404が返されているのが確認できます。



以上でうまくインデックスされるようになります。私の場合翌日にはインデックスされ始めました。

SEOに取り組んでいる人は絶対にしなければならない事だと思います。

0 件のコメント:

コメントを投稿