Robots.txt возвращает 404 вместо отображения текста
Проблема
При попытке запросить файл robots.txt по адресу website.com/robots.txt я всегда получаю ошибку 404.
Files
config > urls.py
from django.conf import settings
from django.contrib import admin
from django.urls import path, include, re_path
from django.views.generic import TemplateView
from django.conf.urls.static import static
from config import views
from django.conf.urls import handler404, handler500, handler403, handler400
handler404 = views.handler404
handler500 = views.handler500
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('allauth.urls')),
path('accounts/', include('django.contrib.auth.urls')),
path('', include('pages.urls')),
path('plants/', include('plants.urls')),
path('robots.txt',TemplateView.as_view(template_name='robots.txt', content_type='text/plain')),
]
config > views.py
from django.http import JsonResponse, Http404, HttpResponse
from django.shortcuts import render
def handler404(request, exception=None):
return render(request, '404.html', status=404)
def handler500(request):
return render(request, '500.html', status=500)
templates > robots.txt
User-Agent: *
Disallow: /admin/
Disallow: /accounts/
Части структуры моих папок, которые может быть полезно знать
project
|
|---config
| |
| |---urls.py
| |---views.py
|
|---templates
|
|---pages
| |---about.html
| |---contact.html
|
|---404.html
|---robots.txt
Я также пробовал использовать только exception
вместо exception=None
внутри моего обработчика404.
Я попытался переместить представления robots.txt и урлы в мое приложение pages
с помощью robots.txt
в папке шаблона pages.
Я попробовал удалить content_type=text/plain
из шаблона url.
Я прочитал несколько различных руководств и не уверен, что делаю неправильно.
Некоторые из ваших вторичных файлов urls.py содержат слишком общий шаблон, который ловит "robots.txt", поэтому диспетчер URL никогда не достигает ожидаемого объявления шаблона в конце списка шаблонов.
Для устранения проблемы попробуйте переместить шаблон robots выше в списке шаблонов и/или пересмотреть включенные файлы urls.py и сделать их шаблоны более специфичными.
Также, пожалуйста, рассмотрите возможность сделать "статический" robots.txt файл действительно STATIC
с точки зрения Django. Такие файлы не должны обслуживаться бэкендом Django на prod и не требуют участия шаблонизатора.