Django で robots.txt を配置する方法、個人的な考慮点を記載します。


前提

Python、Django の Version は以下の通りです。

python3 -V
Python 3.6.2

python3 -m pip list | grep Django
Django (1.11.11)


参考


配置方法

参考記事に記載されているのは以下 3つの方法です。

ワンライナーで書く

この記載方法は知りませんでした。ワンライナーで robots.txt の記載ができます。

from django.conf.urls import url
from django.http import HttpResponse

urlpatterns = [
    url(r'^robots.txt$', lambda r: HttpResponse("User-agent: *\nDisallow: /", content_type="text/plain")),
]

テキストファイル配置して、テンプレートとして読み込む

TemplateView使用して、作成したrobots.txtテンプレートファイルとして読み込みます。

from django.views.generic import TemplateView
urlpatterns = [    
    # robots.txt
    url(r'^robots.txt$', (TemplateView.as_view(template_name="robots.txt", content_type='text/plain', )), 
        name="robots.txt"),
]

django-robots を使用する

django plugin の jazzband/django-robots: A Django app for managing robots.txt files following the robots exclusion protocol使う方法です。

過去に、Mezzanine Sitemap.xmlを生成してみる | Monotalkインストールしてみましたが、ここまでの機能は今回はいらないかなと思いました。
Cache が設定できたり、リクエストのプロトコルに合わせて、記載内容を変更することができるので、細かい設定がしたい場合は、このpluginを使用するのが良いかと思います。


個人的な考慮点

初心者にも分かる!robots.txtの作り方ありますが、管理画面の URL の Disallow の記載をすると、悪意のある第三者に管理画面 URL を知らせているようなものなので、管理画面の記載はせずに管理画面側に metaタグで、<meta name="robots" content="noindex, nofollow"></meta>指定しておき、場合によってはHTTPサーバー側の制御も入れるのが良いかと思います。


Django の管理画面のmetaタグ指定について

Django 自体の管理画面について

Django の 管理画面に、<meta name="robots" content="noindex, nofollow"></meta>該当する記述があるかですが、Django (1.11.11) の管理画面には以下の meta タグの記述がありました。
<meta name="robots" content="NONE,NOARCHIVE"></meta>

NONE は、noindex、<wbr>nofollow両方とも指定した場合の挙動と等しくなり、NOARCHIVE検索エンジンの Cache 保持を拒否する設定になります。
検索エンジンに、インデックスもキャッシュもするなと言っています。
Mezzanine - The Best Django CMS 管理画面にもこの設定はあります。

Wagtail CMS の管理画面について

Wagail CMS の 管理画面ですが、<meta name="robots" content="noindex, nofollow"></meta>該当するタグは付与されていません。
これは少し気になるので、Customising admin templates — Wagtail 1.11.1 documentation記載されているbranding_faviconいう Template ブロックを使って、<meta name="robots" content="NONE,NOARCHIVE"></meta>設定しました。

  • home/templates/wagtailadmin/login.html
    {% extends "wagtailadmin/login.html" %}
    
    {% block branding_favicon %}
        <meta name="robots" content="NONE,NOARCHIVE" />
    {% endblock %}
    {% block branding_login %} mutter.monotalk.xyz 管理機能へサインイン {% endblock %}
    

Django の robots.txt の設定方法について記載しました。
以上です。

コメント