1

我的 Django 站点的自动站点地图会在 URL 上包含 www 和将其排除在外(我的目标是一直使用它)之间波动。这对谷歌没有正确索引我的页面有影响,所以我试图缩小导致这个问题的原因。

我已经设置PREPEND_WWW = True并且我在站点框架中的站点记录设置为包括 www 例如它设置www.example.com为而不是example.com. 我正在使用 memcached,但页面应该在 48 小时后从缓存中过期,所以我不会认为这会导致问题?

您可以在http://www.livingspaceltd.co.uk/sitemap.xml(刷新页面几次)上看到问题的实际效果。

我的站点地图设置相当平淡,所以我怀疑这是问题所在,但如果很明显我遗漏了这里的代码:

***urls.py***

sitemaps = {
    'subpages': Subpages_Sitemap,
    'standalone_pages': Standalone_Sitemap,
    'categories': Categories_Sitemap,
}

urlpatterns = patterns('',
    (r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
    ...

***sitemaps.py***

# -*- coding: utf-8 -*- 
from django_ls.livingspace.models import Page, Category, Standalone_Page, Subpage
from django.contrib.sitemaps import Sitemap

class Subpages_Sitemap(Sitemap):
    changefreq = "monthly"
    priority = 0.4
    def items(self):
        return Subpage.objects.filter(restricted_to__isnull=True)

class Standalone_Sitemap(Sitemap):
    changefreq = "weekly"
    priority = 1
    def items(self):
        return Standalone_Page.objects.all()

class Categories_Sitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.7
    def items(self):
        return Category.objects.all()
4

3 回答 3

0

好吧,它看起来毕竟是一个缓存错误 - 我不太确定哪里出了问题,因为我在一周前进行了更改,所以它的行为肯定不正确,我不得不尝试几个不同的方法来重新启动它。所以这需要更深入的调查,但它现在正在工作。

于 2010-06-01T11:37:21.547 回答
0

这可能是我见过的最奇怪的问题之一。但问题是 Django 在站点地图中构建 URL 的方式非常简单。它只是从数据库中获取当前站点对象,并将“域”字段的值附加到页面的相对位置:

current_site = Site.objects.get_current()
...
loc = "http://%s%s" % (current_site.domain, self.__get('location', item))

(资源)

你确定你没有在数据库级别做任何奇怪的事情吗?如果您有多个镜像数据库,但它们不一致,则可能会产生类似的效果。尝试设置一个仅显示Site.objects.get_current(). 它可能也会波动。

如果您使用任何第三方缓存应用程序(如 Johnny Cache),请尝试将其关闭。

此外,请确保您没有两个 Site 对象 - 一个带有 www,一个没有 www(它不应该给您类似的效果,但有多个服务器实例,配置为不同的 SITE_ID ......也许?)

于 2010-05-28T13:12:44.863 回答
0

PREPEND_WWW = settings.py 中的 True 必须出现在缓存变量设置的上方。这解决了我的问题,这与您的问题相同。当我在谷歌网站管理员工具中提交我的站点地图时,我遇到了同样的问题。

于 2010-10-19T04:32:17.690 回答