我已将Django部署到子目录(我无法完全控制服务器,因此无法更改其部署方式)。
我添加到我的设置中:
FORCE_SCRIPT_NAME = '/hub06'
STATIC_URL = FORCE_SCRIPT_NAME + '/static/'
现在,当我转到/admin/hub06
时,它正常工作,我可以登录并浏览所有管理页面。只要我执行POST
请求(添加新模型),网址就会损坏。
例如,在编辑/hub06/admin/myapp/car/1
当我提交表单时,它会重定向到/hub06/hub06/admin/myapp/car/
因此它会两次添加脚本名称。这仅适用于Django admin中的POST
个请求。
答案 0 :(得分:6)
这是linux主机吗?是运行apache,nginx?这完全取决于您的Web服务器的配置方式。
如果您确实必须有/hub06/
之类的网址前缀,那么您需要更新settings.py中返回网址的所有设置,例如LOGIN_URL
,STATIC_URL
,{{1等等包含前缀。
我认为你不需要使用LOGIN_REDIRECT_URL
。评论在FORCE_SCRIPT_NAME
中更新并更新settings.py
以添加以下内容,例如:
urls.py
让我知道你怎么走。
答案 1 :(得分:-2)
这是解决方案:
# NB - this setting is required to make the app work correctly when running
# via ProxyPass from Apache. Otherwise CSRF checks and some redirects will not
# work.
USE_X_FORWARDED_HOST = True