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 и не требуют участия шаблонизатора.

Вернуться на верх