Django - 尾部斜杠重置页面标题

时间:2012-03-02 11:17:35

标签: python django url trailing-slash

我为这个问题的公然无知而道歉,但我已经被指控在Django修理一些我有没有经验的东西!

我们遇到了网址和重复内容的问题。

如果我们访问“www.hello.com/services/”,那么我们会完整呈现整页,绝对没问题。

如果我们访问“www.hello.com/services”,那么我们会获得相同的内容,但默认情况下似乎设置为一行:

class PageTitleNode(template.Node):?
 ?
    def render(self, context):?
        try:?
            meta_info = MetaInfo.objects.get(url=context['request'].path)?
        except ObjectDoesNotExist:?
            return u'This is our default page title'?
        return u"%s - hello.com" % meta_info.title

这主要的问题是谷歌正在索引两个几乎完全相同的页面,根据我们客户的高薪在线战略合作伙伴,它是糟糕的搜索引擎优化。

我知道这很模糊,但如果有人可以提供帮助,那么就会有很多欢乐。

感谢阅读!

1 个答案:

答案 0 :(得分:3)

我认为你的顾问是对的。一个URL =一个资源。无论如何,在一个资源上有两个网址是非常脏的。这就是为什么Django具有从非尾部斜杠自动重定向到带有斜杠的URL的原因。在certain conditions下。

我非常确定您的网址定义regexp / services /缺少尾部斜杠。无论如何,你应该只使用尾随斜杠

  1. 确保APPEND_SLASH设置为True from django.conf import settings; print settings.APPEND_SLASH

  2. 确保您的所有网址正则表达式都有尾部斜杠,例如url(r'foo' ...) 错误,而url(r'foo/' ...)传递几乎因为可能存在冲突而且url(r'foo/$' ...更好

  3. 确保所有MetaInfo对象都有包含尾部斜杠的网址,例如MetaInfo.objects.exclude(url__endswith='/')应返回MetaInfo而不在url中删除斜杠