Django通用站点地图和附加斜线

时间:2011-06-02 18:39:58

标签: django sitemap

Google抱怨我的站点地图中的网址重定向为301。

我正在使用GenericSitemap,我的APPEND_SLASH设置是默认的(打开)。因此我的网址重定向,所以它们以斜杠结束,这就是我喜欢它的方式。但是,默认的django站点地图(django.contrib.sitemaps)不会将这些尾部斜杠放在它生成的URL上。

我认为我已经正确地遵循了所有文档,并且无法在Google上找到任何答案 - 任何想法?

1 个答案:

答案 0 :(得分:2)

根据source code of django.contrib.sitemapsget_absolute_url用于构建站点地图,因此最好的方法可能是开始按模型转换您的网址模型。但是,如果它导致您遇到太多问题,您可以同时将GenericSiteMap子类化为向所有URL添加斜杠而不使用尾部斜杠:

class SlashedGenericSitemap(GenericSitemap):
    def location(self, obj):
        url = obj.get_absolute_url()
        return url if len(url)>0 and url[-1]=='/' else url + '/'

当然,使用它而不是GenericSiteMap。