2013-08-24 14 views
8

Hier ist meine derzeitige Methode der robots.txt dientdjango robots.txt dient effizient

url(r'^robots\.txt/$', TemplateView.as_view(template_name='robots.txt', 
              content_type='text/plain')), 

Ich glaube nicht, dass dies der beste Weg ist. Ich denke, es wäre besser, wenn es nur eine reine statische Ressource wäre und statisch gedient wäre. Aber die Art und Weise meine django app strukturiert ist, dass die statische Wurzel und alle nachfolgenden statischen Dateien befinden sich in

http://my.domain.com/static/stuff-here 

Irgendwelche Gedanken? Ich bin Amateur bei django aber

TemplateView.as_view(template_name='robots.txt', 
            content_type='text/plain') 

sieht viel mehr Ressourcen verbrauch als nur einen statischen Aufruf an meinem statischen Verzeichnis, das auf nginx serviert wird.

Antwort

27

Ja, robots.txt sollte nicht von Django bedient werden, wenn die Datei statisch ist. Versuchen Sie so etwas in Ihrer Nginx Konfigurationsdatei:

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

Sehen Sie hier für weitere Informationen: http://wiki.nginx.org/HttpCoreModule#alias

Gleiche gilt für die favicon.ico-Datei, wenn Sie eine haben.

+0

nette Lösung. Was passiert aber, wenn ich keinen Zugriff auf diese Datei habe? – BlaShadow

+0

@BlaShadow Sie haben keinen Zugriff auf welche Datei? die roboter.txt? – Rexford

+0

Warum sollte es von Nginx bedient werden? – dspacejs

1

Ich weiß, dass dies eine späte Antwort ist, ich suchte nach einer ähnlichen Lösung, wenn Sie keinen Zugriff auf die Webserver-Konfiguration haben. Also für alle anderen für eine ähnliche Lösung suchen, fand ich diese Seite: http://www.techstricks.com/adding-robots-txt-to-your-django-project/

das Hinzufügen dieser url.py zu einem Projekt schlägt vor:

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"), 
] 

die ich denke, sollte etwas effizienter sein, dass mit einer Vorlage Datei, obwohl es Ihre URL-Regeln unordentlich machen könnte, wenn mehrere 'Disallow:' - Optionen benötigt werden.