0

我正在使用 Gunicorn + Nginx 部署一个 Django 项目。我使用站点地图框架创建了一个 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>

当我将 sitemap.xml 添加到 Google 网站管理员工具中的 Google 索引时,Google 不允许使用 sitemap.xml,因为位置标记中的域是 127.0.0.1:8001 而不是我的域。

这个问题有什么解决办法吗?

非常感谢你的帮助。

4

1 回答 1

0

我想如果我理解你的问题是正确的,你会问为什么谷歌给你一个错误访问 127.0.0.1:8001

127.0.0.1 通常指向 localhost

我很确定谷歌将无法访问它

您需要的是一个域名,或者至少是您的服务器 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 站点框架

于 2015-02-02T02:37:16.050 回答