我对sitemap.xml生成和Django的站点地图框架有一些疑问。
假设我有一个博客应用程序,其中包含每个帖子内容的post_detail页面和一堆“帮助”页面,如“按标签查看”,“按作者查看”等。
我可能有一个自定义的django.conf.urls.defaults.url函数来注册站点地图的url-mapping ...你怎么看?
谢谢。
答案 0 :(得分:3)
如何使用站点地图由搜索引擎决定。有些只会对站点地图中的内容编制索引,而其他人则会将其作为起点,并根据交叉链接抓取整个站点。
至于包含非生成页面,我们刚刚创建了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/