2011-06-02 16 views
0

谷歌正在抱怨我的站点地图中的URL重定向301。Django通用网站地图和附加斜杠

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

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

+0

任何想法?我是否应该为我的所有模型重写get_absolute_url以迎合斜线? – Rich 2011-06-11 10:03:39

回答

2

根据source code of django.contrib.sitemaps,get_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。

+0

感谢你们,虽然Append_slash默认为开启,但我会认为数十人会有和我一样的困难/行为,但我似乎是唯一的......? – Rich 2011-06-13 07:25:32

+0

'APPEND_SLASH = True'实际上是在创建重定向。如果它关闭(不推荐),你可能会注意到它。也许其他人没有注意到他们有“重定向问题”... – Udi 2011-06-13 07:35:25

+0

感谢@Udi我可能会去与分类的网站地图,但我要离开问题和赏金打开几天,看看是否有人否则有任何输入/最佳实践 – Rich 2011-06-13 07:39:49