Django:SSL + 尾部斜杠导致浏览器中的 URL 显示异常路径

托管:A2Hosting
部署的 A2Hosting 参考:链接
Python:3.8.1
Django:3.1.1
Web 服务器:Apache

当settings.py中的“SECURE_SSL_REDIRECT = False ”时,在urls.py路径中添加尾部斜杠不会出现问题。

    urlpatterns = [

       path('admin/', admin.site.urls),

       path('login/', dashboard, name="dashboard"),

   ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

   urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

事实上,访问 URL http://subdomain.domain.com/login(或 admin)会显示正确的页面。

但是,当我设置“SECURE_SSL_REDIRECT = True ”时,如果我保留尾部斜杠并访问相同的 URL,页面仍会正确显示,但浏览器地址栏中的 URL 会发生变化。

而不是:
https://subdomain.domain.com/login
它变成:
https://subdomain.domain.com/home/user/a2hosting_python_app/login/

对于管理路径,改为:
https://subdomain.domain.com/admin/login/?next=/admin/
变为:
https://subdomain.domain.com/home/user/a2hosting_python_app/admin/login /?next=/home/user/a2hosting_python_app/admin/

此时,如果我编辑urls.py删除尾部斜杠:

    urlpatterns = [

       path('admin', admin.site.urls),

       path('login', dashboard, name="dashboard"),

   ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

   urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

登录 URL 显示正确,但管理 URL 不会。

我没有在settings.py中设置 APPENDING_SLASH 。

有谁知道为什么 Django 会这样?我究竟做错了什么?
提前谢谢了。


互换的青春
浏览 88回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python