gpt4 book ai didi

django - Django 站点地图框架中的静态页面

转载 作者:行者123 更新时间:2023-12-02 00:39:38 25 4
gpt4 key购买 nike

我对 sitemap.xml 的生成,尤其是 Django 的站点地图框架有一些疑问。

假设我有一个博客应用程序,它有包含每个帖子内容的 post_detail 页面和一堆“帮助”页面,如“按标签查看”、“按作者查看”等。

  1. 是否必须在 sitemap.xml 中包含每个页面,包括“辅助”页面?我希望所有的“助手”页面都被索引,因为有很多关键字和文本。我知道站点地图旨在帮助索引页面,为网络爬虫提供一些指导,而不是限制爬行。最佳做法是什么?包括所有内容还是仅包括重要页面?
  2. 如果可以将所有页面都放在 sitemap.xml 中,那么将未存储在数据库中的普通页面提交到站点地图框架的最佳方式是什么?一种可能的方法是有一个站点地图类,它通过 url 名称返回反向 url。但它似乎一点也不干,因为我将需要第二次注册这些 url 名称(在 url() 函数和 Sitemap 类中)。

我可能有一个自定义的 django.conf.urls.defaults.url 函数来为站点地图注册 url 映射......你觉得怎么样?

谢谢。

最佳答案

站点地图的使用方式由搜索引擎决定。有些只会索引站点地图中的内容,而另一些则会以此为起点,并根据交叉链接抓取整个站点。

至于包含非生成的页面,我们刚刚创建了一个 django.contrib.sitemaps.Sitemap 的子类,并让它读取一个纯文本文件,每行一个 URL。像这样的东西:

class StaticSitemap(Sitemap):
priority = 0.8
lastmod = datetime.datetime.now()

def __init__(self, filename):
self._urls = []
try:
f = open(filename, 'rb')
except:
return

tmp = []
for x in f:
x = re.sub(r"\s*#.*$", '', x) # strip comments
if re.match('^\s*$', x):
continue # ignore blank lines
x = string.strip(x) # clean leading/trailing whitespace
x = re.sub(' ', '%20', x) # convert spaces
if not x.startswith('/'):
x = '/' + x
tmp.append(x)
f.close()
self._urls = tmp
# __init__

def items(self):
return self._urls

def location(self, obj):
return obj

您可以在主站点地图例程中用类似这样的方式调用它:

sitemap['static'] = StaticSitemap(settings.DIR_ROOT +'/sitemap.txt')

我们的 sitemap.txt 文件看起来像这样:

# One URL per line.
# All paths start from root - i.e., with a leading /
# Blank lines are OK.

/tour/
/podcast_archive/
/related_sites/
/survey/
/youtube_videos/

/teachers/
/workshops/
/workshop_listing_info/

/aboutus/
/history/
/investment/
/business/
/contact/
/privacy_policy/
/graphic_specs/
/help_desk/

关于django - Django 站点地图框架中的静态页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3109781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com