Django 1.10.7中的站点地图

时间:2017-09-04 08:49:17

标签: django django-sitemaps

我遇到了让Django设置为我生成站点地图的问题。

我已将以下内容添加到我的设置文件

'django.contrib.sites',
'django.contrib.sitemaps',

和我的urls.py文件我有以下内容:

from django.conf.urls import include, url
from django.contrib import admin
from cms.sitemaps import CMSSitemap
from django.contrib.sitemaps.views import sitemap
from ames import views

admin.autodiscover()

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^contact/', include('contact.urls')),
    url(r'^news/', include('news.urls')),
    url(r'^sitemap.xml$', sitemap, {'sitemaps': {'cmspages': CMSSitemap}}),
    url(r'^$', views.home),
    url(r'^', include('cms.urls')),
]

在部署这些文件之后,我应该能够在/sitemap.xml上看到.xml文件,但是我收到了404错误:

Page not found (404)
    Request Method: GET
        Request URL:    http://xxxxxxxxxxxxxx.co.uk/sitemap.xml/
            Raised by:  cms.views.details
Using the URLconf defined in ames.urls, Django tried these URL patterns, in this order:
    ^admin/
    ^contact/
    ^news/
    ^sitemap.xml$
    ^$
    ^ ^cms_wizard/
    ^ ^(?P<slug>[0-9A-Za-z-_.//]+)/$ [name='pages-details-by-slug']
    ^ ^$ [name='pages-root']
The current URL, /sitemap.xml/, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

任何想法都非常感激。

2 个答案:

答案 0 :(得分:1)

尝试替换:

url(r'^sitemap.xml$', sitemap, {'sitemaps': {'cmspages': CMSSitemap}}),
#                ^^^

url(r'^sitemap.xml/', sitemap, {'sitemaps': {'cmspages': CMSSitemap}}),
#                ^^^

答案 1 :(得分:0)

我认为这是一个缓存问题。

  • 在浏览器中打开 新的隐身窗口 ,然后打开http://xxxxxxxxxxxxxx.co.uk/sitemap.xml而不使用shalsh (/)

OR:

  • 清除缓存,然后重新打开http://xxxxxxxxxxxxxx.co.uk/sitemap.xml而不再使用shalsh (/)
  

不要错过:sitemap.xml改为sitemap\.xml,如this source