我对sitemap.xml的生成以及Django的sitemap框架特别有疑问。

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

  • 是否必须将sitemap.xml中的每个页面都包括在内,包括“帮助程序”页面?我希望对所有“帮助程序”页面进行索引,因为其中包含许多关键字和文本。我知道站点 map 旨在帮助索引页面,向网络爬虫提供一些指导,但不限制爬网。最佳做法是什么?包含所有内容还是仅包含重要页面?
  • 如果可以将所有页面都包含在sitemap.xml中,那么将未存储在数据库页面中的纯文本提交到Sitemaps框架的最佳方法是什么?一种可能的方法是拥有一个Sitemap类,该类按网址名称返回反向网址。但这似乎根本不是DRY,因为我将需要第二次注册这些url名称(在url()函数和Sitemap类中)。

  • 我可能有一个自定义的django.conf.urls.defaults.url函数来注册站点 map 的url映射...您认为呢?

    谢谢。

    最佳答案

    网站 map 的使用方式由搜索引擎决定。有些人只会索引您在站点 map 中的内容,而另一些人将其用作起点并根据交叉链接对整个网站进行爬网。

    至于包括未生成的页面,我们仅创建了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
    

    您可以在主站点 map 例程中使用类似的方法调用它:
    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 Sitemap框架中的静态页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3109781/

    10-13 05:31