部署Django应用至Heroku遇DisallowedHost错误,已配置规则仍报错
解决Django部署Heroku时的DisallowedHost错误
嘿,我之前部署Django到Heroku时也踩过这个一模一样的坑!咱们一步步来排查和解决:
最可能的原因:Heroku没加载你的production配置文件
你在production.py里配置了ALLOWED_HOSTS和DEBUG,但你的wsgi.py默认指向的是ecommerce.settings——如果你的项目是分环境配置(比如settings/base.py、settings/production.py),那Heroku现在可能还在加载默认的settings.py,根本没用到你写的production.py!
解决方法:设置Heroku环境变量指定配置文件
在本地终端运行这条命令,告诉Heroku加载你的production配置:
heroku config:set DJANGO_SETTINGS_MODULE=ecommerce.settings.production
(注意路径要对应你的项目结构,如果production.py直接在根目录的settings文件夹下,这个路径就没问题)
其他排查方向
如果上面的方法没用,再检查这几点:
确认ALLOWED_HOSTS的写法
虽然.herokuapp.com理论上能匹配所有子域名,但有时候Heroku的请求头会有特殊情况,试试把具体域名也加上:ALLOWED_HOSTS = ['ecommerceyy.herokuapp.com', '.herokuapp.com']检查production.py的配置是否生效
确保production.py里正确覆盖了基础配置,比如开头要有:from .base import * # 假设你有base.py作为基础配置 DEBUG = False ALLOWED_HOSTS = ['.herokuapp.com']而且要确认你已经把修改后的代码push到Heroku了:
git add . git commit -m "update production settings" git push heroku main验证DEBUG确实是False
如果DEBUG=True,Django会忽略ALLOWED_HOSTS的配置(本地开发时的特性),所以一定要确保production.py里的DEBUG是False,并且被正确加载。
内容的提问来源于stack exchange,提问作者letheyue
相关产品推荐
相关产品推荐

