django有效地服务robots.txt

时间:2013-08-24 23:41:22

标签: python django robots.txt

以下是我目前使用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上提供的静态目录的静态调用消耗更多的资源。

2 个答案:

答案 0 :(得分:40)

是的,如果文件是静态的,Django不应该提供robots.txt。在你的Nginx配置文件中尝试这样的东西:

location  /robots.txt {
    alias  /path/to/static/robots.txt;
}

有关详细信息,请参阅此处:http://wiki.nginx.org/HttpCoreModule#alias

同样的事情适用于favicon.ico文件,如果你有一个。

答案 1 :(得分:5)

我知道这是一个迟到的回复,当我无法访问网络服务器配置时,我正在寻找类似的解决方案。所以对于寻找类似解决方案的其他人,我找到了这个页面: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"),
]

我认为使用模板文件应该稍微有点效率,但如果需要多个“禁止使用”,它可能会使您的网址规则不整齐:'选项。