我的Django网站的自动站点地图在网址上包含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()
答案 0 :(得分: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缓存),请尝试将其关闭。
另外,请确保您没有两个Site对象 - 一个有,一个没有www(它不应该给你类似的效果,但有多个服务器实例,为不同的SITE_ID配置......也许?)
答案 1 :(得分:0)
嗯,看起来它毕竟是一个缓存错误 - 我不太确定是不是错了,因为我在一周前做了这些修改,所以它的行为不正确我不得不尝试一些不同的方法来重新启动它。所以这需要进行更深入的调查,但它现在正在发挥作用。
答案 2 :(得分:0)
PREPEND_WWW = True必须出现在缓存变量设置上方。这解决了我的问题,这与你的问题是一样的。当我在谷歌网站管理员工具中提交我的站点地图时,我遇到了同样的问题。