【问题标题】:Django sitemap index pagination URL formatDjango 站点地图索引分页 URL 格式
【发布时间】:2023-03-25 02:19:01
【问题描述】:

我已经为我的 Django 站点创建了一个sitemap index,因为我有超过 50k 个 URL。 Django 说它会自动为我分页,但我无法访问 URL 中的结果。

相关代码:

#urls.py
...
sitemaps = {
    'state': StateSitemap,
    'school': SchoolSitemap,
}

urlpatterns = patterns('',
    ....    
    url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
    url(r'^sitemap-(?P<section>.+).xml$','django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
)

“状态”的站点地图可以正常工作:

  • www.example.com/sitemap-state.xml

但是对于有 100k+ 条目的学校,因此应该由 Django 自动分页,所有以下 404:

  • www.example.com/sitemap-school.xml
  • www.example.com/sitemap-school1.xml
  • www.example.com/sitemap-school/1.xml

我知道我误解了“.+”作为站点地图索引 URL 的一部分是如何工作的,但我很难过。

我应该使用哪个 URL 来查看我的 URL 中“学校”的分页站点地图结果?

【问题讨论】:

  • 查看 django 的视图代码,似乎分页是由名为 p 的 GET 参数处理的,而不是由正则表达式的 + 处理的。正则表达式的.+ 部分用于部分名称而不是分页。 github.com/django/django/blob/master/django/contrib/sitemaps/…
  • 是的,正确的。感谢您澄清这一点并提供指向准确文档的链接。

标签: regex django sitemap


【解决方案1】:

您的网址中缺少\

url(r'^sitemap-(?P<section>.+).xml$','django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),

应该是

url(r'^sitemap-(?P<section>.+)\.xml$','django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),

【讨论】:

  • 不错的收获!现已修复。
猜你喜欢
  • 1970-01-01
  • 2021-10-13
  • 2018-01-16
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多