前提・実現したいこと
以下の2つのページを参考に、サイトマップを自動生成する機能を作りました。
Djangoで、サイトマップを自動生成する
Djangoでサイトマップを動的に生成する方法
ローカル開発環境では問題なく動き、xmlサイトマップが表示されました。
本番環境(Nginx, gunicorn, postgresql))だと、404エラーページが表示されてしまいます。
開発環境と本番環境で変えたこと
DEBUG=True or False 以外コードは同じです。
また、開発環境では、管理画面のサイトマップのサイトを登録するところ(http://127.0.0.1:8000/admin/sites/site/)を以下のようにしました。
ドメイン名:127.0.0.1:8000
表示名:127.0.0.1:8000
本番環境では、ドメインを入れました。
ドメイン名:example.com
表示名:example.com
該当するコード
settings.py
python
1INSTALLED_APPS = [ 2(省略) 3 'django.contrib.sites', 4 'django.contrib.sitemaps', 5 'sampleapp', 6]
settings.pyと同じ階層のurls.py
python
1from django.contrib import admin 2from django.contrib.sitemaps.views import sitemap 3from django.urls import path, include 4from django.conf import settings 5from django.conf.urls.static import static 6from sampleapp.sitemap import * 7 8sitemaps = { 9 'index': IndexSitemap, 10} 11 12urlpatterns = [ 13 path('admin/', admin.site.urls), 14 path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='sitemap'), 15] 16 17urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 18urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 19 20urlpatterns += [path('', include('sampleapp.urls', namespace='sampleproject'))]
sitemap.py
python
1from django.contrib.sitemaps import Sitemap 2from django.shortcuts import resolve_url 3from .models import * 4 5 6class IndexSitemap(Sitemap): 7 changefreq = "weekly" 8 priority = 1.0 9 10 def items(self): 11 return ['sampleapp:index'] 12 13 def location(self, obj): 14 return resolve_url(obj)
開発環境では、問題なく動きました。
本番環境では何か追加で必要な設定等あるのでしょうか?
お分かりになる方、何卒宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー