これがrobots.txtを提供する私の現在の方法です
url(r'^robots\.txt/$', TemplateView.as_view(template_name='robots.txt',
content_type='text/plain')),
これが最善の方法だとは思いません。純粋な静的リソースであり、静的に提供された方がよいと思います。しかし、私のDjangoアプリの構造は、静的ルートとそれに続くすべての静的ファイルが
http://my.domain.com/static/stuff-here
何かご意見は?私はDjangoですが、
TemplateView.as_view(template_name='robots.txt',
content_type='text/plain')
nginxで提供される静的ディレクトリへの静的呼び出しよりもはるかに多くのリソースを消費しているように見えます。
はい、robots.txtはDjangoファイルが静的な場合は提供されるべきではありません。Nginx構成ファイルで次のようなことを試してください:
location /robots.txt {
alias /path/to/static/robots.txt;
}
詳細については、こちらを参照してください: http://wiki.nginx.org/HttpCoreModule#alias
Favicon.icoファイルがある場合は、同じことが当てはまります。
Apacheconfigの同等のコードは次のとおりです。
Alias /robots.txt /path/to/static/robots.txt
私はこれが遅い返信であることを知っています、私はウェブサーバー設定へのアクセスがないときに同様の解決策を探していました。したがって、同様の解決策を探している他の人のために、私はこのページを見つけました: http://www.techstricks.com/adding-robots-txt-to-your-Django-project/
これは、これをプロジェクトurl.pyに追加することを提案します。
from Django.conf.urls import url
from Django.http import HttpResponse
urlpatterns = [
#.... your project urls
url(r'^robots.txt', lambda x: HttpResponse("User-Agent: *\nDisallow:", content_type="text/plain"), name="robots_file"),
]
これは、テンプレートファイルを使用するよりも少し効率的であると思いますが、複数の「Disallow:」オプションが必要な場合は、URLルールが乱雑になる可能性があります。