Django Admin + FORCE_SCRIPT_NAME + 登录重定向错误
Posted
技术标签:
【中文标题】Django Admin + FORCE_SCRIPT_NAME + 登录重定向错误【英文标题】:Django Admin + FORCE_SCRIPT_NAME + Login redirects incorrectly 【发布时间】:2013-10-06 20:41:45 【问题描述】:我让 Django 在 nginx 后面运行 fastcgi_pass
。我在 /django/sample
这样的子路径上运行 Django。
location /django/sample
include fastcgi_params;
fastcgi_pass 127.0.0.1:8025;
我在 Django 设置模块中使用FORCE_SCRIPT_NAME
,这似乎解决了我在子路径中运行时遇到的所有问题。
在settings.py中:
FORCE_SCRIPT_NAME = "/django/sample/"
我在这里使用管理员登录(并正确获取管理员 UI):
http://server/django/sample/admin
但是当我提交时,它会重定向到:
http://server/django/sample/django/sample/admin
真正奇怪的是,如果我更改FORCE_SCRIPT_NAME=""
,登录就可以了。
但是,管理页面中的所有链接都是/admin
,而不是/django/sample/admin/
我到底错过了什么?设置FORCE_SCRIPT_NAME="/django/sample/"
似乎可以解决除管理员登录之外的所有问题。
有什么想法吗?
更新:
我也尝试在 nginx conf 中使用fastcgi_split_path_info
(并在设置中取出FORCE_SCRIPT_NAME
)。同样,这解决了除了管理员登录重定向之外的所有路径问题。
这样的配置:
location /django/sample
fastcgi_split_path_info ^(/django/sample)(.*)$;
include fastcgi_params;
fastcgi_pass 127.0.0.1:8025;
【问题讨论】:
【参考方案1】:仅供参考,我放弃了。所有文档都说它应该很容易。但是处理起来太痛苦了。相反,我要求我们的 Django 应用程序使用子域并使用服务器设置虚拟主机。这样 Django 可以在文档根目录 "/" 运行
【讨论】:
我知道已经过了几年,但我告诉你我遇到了同样的问题。这是#$*@$(!我在开发服务器中进行了几次测试,它运行良好,但是一旦它转换到生产环境,一些链接就会开始损坏,例如重定向。这让我发疯。这应该得到了更好的发展。 我也放弃了。 serverfault.com/questions/1076763/…【参考方案2】:FWIW,当我在使用 wsgi 的 Django 服务器前面有一个代理服务器时,我已经在另一个线程中编写了一个对我有用的解决方案。
我记得很久以前对此进行了故障排除...由于 Django 管理员设置和处理表单提交上的 next
参数的方式,您看到了不同步行为。
根据我的经验,Django 网站绝对应该使用FORCE_SCRIPT_NAME
来修改您的后端生成链接的方式,并且您的代理服务器还应该去掉路径的子文件夹(即脚本名称)部分。
另一个线程:
Host Django on subfolder
【讨论】:
以上是关于Django Admin + FORCE_SCRIPT_NAME + 登录重定向错误的主要内容,如果未能解决你的问题,请参考以下文章
django 配置管理后台,出现多个 admin/admin/admin