Sitemap.xml работает на разработке, но 404 ошибки на производстве

Я следовал документации, чтобы добавить карту сайта на мой сайт, все отлично работает на разработке, как только я загружаю на производство, у меня 404 ошибка, как sitemap не может быть найден. Я проверил базу данных на продакшене, чтобы убедиться, что SITE_ID совпадает с pk сайта, зарегистрированного в базе данных.

Это мое установленное приложение в settings.py

а это мой urls.py (корневой проект, где находится файл settings.py)

from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.auth import views as auth_views
from django.contrib.sitemaps.views import sitemap
from django.urls import path, include

from icerd import settings
from icerd.sitemaps import StaticViewSitemap

admin.site.site_header = "ICERD' website Administration"
admin.site.site_title = 'Administration'
admin.site.index_title = 'ICERD'

sitemaps = {
    'static': StaticViewSitemap,
}

urlpatterns = [
    path('i18n/', include('django.conf.urls.i18n')),
    path('admin/', admin.site.urls),
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps},
         name='django.contrib.sitemaps.views.sitemap'),
    path('', include('homepage.urls')),
    path('registration/', include('registration.urls')),
    path('administration/', include('administration.urls')),
    path('reset_password/', auth_views.PasswordResetView.as_view(template_name="password/reset_password.html"),
         name='reset_password'),
    path('reset_password_sent/',
         auth_views.PasswordResetDoneView.as_view(template_name="password/reset_password_sent.html"),
         name='password_reset_done'),
    path('reset/<uidb64>/<token>',
         auth_views.PasswordResetConfirmView.as_view(template_name="password/reset_password_form.html"),
         name='password_reset_confirm'),
    path('reset_password_complete/',
         auth_views.PasswordResetCompleteView.as_view(template_name="password/reset_password_done.html"),
         name='password_reset_complete'),
]

if settings.DEBUG:
    urlpatterns += static(
        settings.MEDIA_URL,
        document_root=settings.MEDIA_ROOT
    )

а это мой sitemaps.py (также в корне, где находится settings.py)

# sitemaps.py
from django.contrib.sitemaps import Sitemap
from django.urls import reverse


class StaticViewSitemap(Sitemap):
    priority = 0.5
    changefreq = 'weekly'

    def items(self):
        return [
            'homepage:homepage',
            'homepage:get_logo',
            'homepage:about_us',
            'homepage:login',
            'homepage:logout',
        ]

    def location(self, item):
        return reverse(item)

После всего этого я запустил миграции, зашел в django admin и заменил 'example.com' в таблице sites.

Если я запускаю тот же код на своем компьютере, все работает нормально, на продакшене не работает. Я использую debian vps для размещения своего сайта, используя nginx и gunicorn.

Попробуйте добавить эту строку в блок вашего сервера nginx

rewrite ^/(.*)/$ /$1 permanent;

Если это поможет, это означает, что ваш браузер пытается получить доступ к "/sitemap.xml/" (не "/sitemap.xml")

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