我正在使用Gunicorn + Nginx部署Django项目。我使用sitemap framework创建了一个sitemap.xml文件。我使用127.0.0.1:8001代理,所以当我访问example.com/sitemap.xml时,结果与此类似:
<url>
<loc>
http://127.0.0.1:8001/pages/item_1
</loc>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
当我在Google网站站长工具中将sitemap.xml添加到Google索引时,Google不允许使用sitemap.xml,因为位置标记中的域名是127.0.0.1:8001,而不是我的域名。
这个问题有解决办法吗?
非常感谢你的帮助。
答案 0 :(得分:0)
我想如果我理解你的问题,你就会问为什么google在访问127.0.0.1:8001时会出错?
127.0.0.1通常指向localhost
我非常确定google无法访问
您需要的是域名,或至少是您的服务器IP地址
一旦你有这些,请执行以下操作:
制作名为generate_sitemaps.py
的文件from foo.models import Foo
from django.contrib import site maps
class FooSitemap(sitemaps.Sitemap):
changefreq = "hourly"
priority = 0.5
def items(self):
return Foo.objects.all()
def lastmod(self, obj):
return obj.updated
# make sure this is at the bottom of your generate_sitemap.py file
sitemaps = {
'foo': FooSitemap,
}
在您的urls.py文件中来自generate_sitemap导入站点地图
urlpatterns += patterns('',
(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'site maps': sitemaps})
)
在foo / models.py中,您将需要一个get_absolute_url方法来自动返回每个条目
Class Foo(models.Model)
....
updated = models.DateTimeField(auto_now=True)
def get_absolute_url(self):
return reverse('some_url', args=[self.id])
在您的设置文件中:
INSTALLED_APPS = (
....
'django.contrib.sitemaps',
)
如果您需要有关在django中设置网站和域的更多信息,请使用结帐Django sites framework