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
相关产品推荐
相关产品推荐

