部署在cPanel子域名的Django应用仅根URL可用,其他URL失效求助
cPanel部署Django子域名仅根URL可访问的解决办法
问题表现
Django应用部署在cPanel子域名后,仅根路径能正常访问,访问其他路径时:
- 浏览器地址栏中斜杠后的内容呈灰色
- 应用日志未接收到完整请求地址
解决方案
1. 修正.htaccess配置
确保子域名根目录下的.htaccess正确转发所有请求到WSGI脚本,内容如下:
PassengerAppRoot /home/你的用户名/子域名项目目录 PassengerBaseURI / PassengerPython /home/你的用户名/虚拟环境路径/bin/python WSGIScriptAlias / /home/你的用户名/子域名项目目录/wsgi.py <Directory /home/你的用户名/子域名项目目录> AllowOverride All Require all granted </Directory>
核心是WSGIScriptAlias /要映射到根,保证所有路径请求都能被Django处理。
2. 检查Django项目设置
settings.py中确保ALLOWED_HOSTS包含你的子域名:ALLOWED_HOSTS = ['sub.example.com']- 注释或删除
FORCE_SCRIPT_NAME(独立子域名不需要该配置):# FORCE_SCRIPT_NAME = '/subdomain'
3. 核对cPanel Python应用配置
在cPanel的「Python Applications」管理页,确认应用的:
- Application Root指向包含
manage.py的项目根目录 - Application URL设为
/ - Startup File指定为
wsgi.py
4. 验证Django路由配置
确保urls.py中已正确定义非根路径的路由,例如:
from django.urls import path from .views import home, dashboard urlpatterns = [ path('', home, name='home'), path('dashboard/', dashboard, name='dashboard'), ]
5. 重启应用
在cPanel的Python Applications界面点击「Restart」,使配置修改生效。
内容的提问来源于stack exchange,提问作者carlvindevzw
相关产品推荐
相关产品推荐

