You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django站点地图中get_absolute_url致域名异常合并问题求助

解决Django站点地图域名错误问题

问题根源

你碰到的域名变成exampleio.io的问题,其实是Django生成完整URL时用的站点域名配置错了。get_absolute_url返回的是相对路径,框架会自动拼接站点的域名和协议生成完整URL,所以问题不在你写的get_absolute_url或者ExampleSitemap类本身,而是站点域名的配置项出了问题。

修复方法

1. 修正Site模型的域名数据

Django默认靠sites框架里的Site模型来获取站点域名:

  • 登录Django后台,找到「站点」管理项
  • 查看对应settings.py里SITE_ID值的那条站点记录,把域名字段从exampleio.io改成example.io就行

2. 直接在Sitemap类里指定域名(快速修复)

要是不想依赖Site模型,直接给你的ExampleSitemap加个domain属性:

class ExampleSitemap(Sitemap):
    protocol = "https"
    changefreq = "weekly"
    priority = 0.7
    limit = 500
    domain = "example.io"  # 新增这一行

    def items(self):
        return Example.objects.all()

3. 检查settings.py的相关配置

  • 确保ALLOWED_HOSTS里包含example.io,比如:
    ALLOWED_HOSTS = ['example.io', 'www.example.io']
    
  • 确认INSTALLED_APPS里有django.contrib.sites,并且SITE_ID设置正确(比如SITE_ID = 1,对应后台里ID为1的站点)

验证修改

改完之后,要么运行python manage.py sitemap重新生成站点地图,要么直接访问站点地图URL刷新页面,看看<loc>标签里的域名是不是变成example.io了。

内容的提问来源于stack exchange,提问作者user17841947

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:55:21