繁体   English   中英

指定 HTTP 或 HTTPS 时 Django 重定向不起作用

[英]Django redirect not working when specifying HTTP or HTTPS

我不确定为什么会发生这种情况,但是当我在重定向中指定 HTTP 或 HTTPS 作为我的完整 URL 时,我的域名后面的部分会附加到我的当前域中。

例如:如果我重定向到https://www.external_site.com/error/page/hi_there.html它将转到https://www.currentdomain.com/error/hi_there/html

return redirect('https://www.external_site.com/error/page/hi_there.html')

但是,当我删除 https: 部分(但保留 //)时,重定向按预期工作:

return redirect('//www.external_site.com/error/page/hi_there.html')

我正在使用 Django v 1.11.23,但也在 Django 2 上对其进行了测试。

Django 在 Apache 上的 mod_wsgi 上运行,并通过一个 IIS 反向代理(反向代理在这种情况下只是一个反向代理,除了将外部域重写为内部域之外,没有特殊规则或其他任何东西。)

我发现了这个问题。

它与“响应标头中的 IIS 反向重写主机”ARR 设置有关。 我通过转到“IIS 管理器 -> 机器或站点(我使用机器,因此它适用于所有站点) -> 应用程序请求路由缓存 -> 服务器代理设置并取消选中“响应标头中的反向重写主机”复选框来禁用它“

现在它正在正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM