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

部署在Heroku上的Django应用默认给所有URL添加末尾斜杠

解决Heroku上Django URL不自动添加末尾斜杠的问题

下面是几个可行的解决办法,按优先级尝试:

  • 显式开启APPEND_SLASH
    在settings.py里明确添加:

    APPEND_SLASH = True
    

    虽然Django默认值是True,但显式设置可以避免环境差异导致的隐式失效。

  • 检查中间件顺序
    确保django.middleware.common.CommonMiddleware在MIDDLEWARE列表中,并且位置靠前(一般放在中间件列表的前几位),它是负责处理URL末尾斜杠重定向的核心中间件。示例配置:

    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        # 其他中间件...
        'django.middleware.common.CommonMiddleware',
        # 其他中间件...
    ]
    
  • 完善代理相关配置
    除了HTTP_X_FORWARDED_PROTO,还需要正确配置以下参数,确保Django能识别Heroku的代理请求:

    USE_X_FORWARDED_HOST = True
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    

    这能让Django正确处理来自Heroku反向代理的请求,避免重定向逻辑出错。

  • 确认URLconf配置规范
    确保你在urls.py里定义的路径不要以斜杠结尾,比如写path('blog', views.blog)而不是path('blog/', views.blog),这样Django的APPEND_SLASH机制才能正常触发重定向。

  • 检查Procfile和启动命令
    确保Procfile里的启动命令正确,比如使用gunicorn的话,命令应该是类似:

    web: gunicorn your_project_name.wsgi --log-file -
    

    错误的启动方式可能导致请求处理流程异常,影响斜杠重定向逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:57:06