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

Django站点地图框架中的静态页面,django,indexing,sitemap,Django,Indexing,Sitemap,我对sitemap.xml的生成和Django的sitemap框架有一些疑问 比如说,我有一个博客应用程序,它有一个包含每个帖子内容的帖子详细页面和一堆“助手”页面,比如“按标签查看”、“按作者查看”等等 是否必须在sitemap.xml中包含每个页面,包括“帮助者”页面?我希望所有的'助手'网页索引,因为有许多关键字和文本。我知道网站地图的设计目的是帮助索引页面,为网络爬虫提供一些指导,但不是限制爬虫。这方面的最佳做法是什么?包括所有内容还是只包括重要页面 如果可以将所有页面都放在sitema

我对sitemap.xml的生成和Django的sitemap框架有一些疑问

比如说,我有一个博客应用程序,它有一个包含每个帖子内容的帖子详细页面和一堆“助手”页面,比如“按标签查看”、“按作者查看”等等

  • 是否必须在sitemap.xml中包含每个页面,包括“帮助者”页面?我希望所有的'助手'网页索引,因为有许多关键字和文本。我知道网站地图的设计目的是帮助索引页面,为网络爬虫提供一些指导,但不是限制爬虫。这方面的最佳做法是什么?包括所有内容还是只包括重要页面
  • 如果可以将所有页面都放在sitemap.xml中,那么向sitemaps框架提交普通页面(而不是存储在db页面中)的最佳方式是什么?一种可能的方法是使用sitemap类,该类通过url名称返回反向url。但它看起来一点也不枯燥,因为我需要第二次注册这些url名称(在url()函数和Sitemap类中)
  • 我可能有一个自定义的django.conf.url.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/
    

    我真的很抱歉花了太长时间才回复,只是完全忘记了。我真的不喜欢这个解决方案,但它是可以接受的。我自己也用过URLSolver,但它也很乱。所以我还是有点怀疑。我也不喜欢它,但当我们这样做(2007年夏天)的时候,它似乎是一个让它工作起来的快速方法。