在cPanel部署二级域名Django应用时静态文件加载失败求助
解决cPanel二级域名下Django静态文件加载失败问题
1. 核对Django静态配置参数
- 打开项目
settings.py,确认以下关键配置:STATIC_URL = '/static/'(二级域名下无需额外修改此参数)STATIC_ROOT必须指向cPanel中二级域名对应文档根目录下的static文件夹,例如你的二级域名文档根是/home/your_username/public_html/subdomain,则设置STATIC_ROOT = os.path.join(BASE_DIR, 'public_html/subdomain/static')- 确保
INSTALLED_APPS列表中包含django.contrib.staticfiles
2. 重新执行collectstatic并检查权限
- 在cPanel终端或本地项目根目录运行命令:
python manage.py collectstatic,确认终端输出显示所有静态文件已成功复制到STATIC_ROOT指定路径 - 进入cPanel文件管理器,调整静态文件权限:
- 所有静态文件夹权限设为
755 - 所有静态文件(css/js/img等)权限设为
644
- 所有静态文件夹权限设为
3. 配置二级域名的.htaccess规则
- 在二级域名的文档根目录(如
public_html/subdomain)找到.htaccess文件,添加以下规则到Django重写规则的最前端,确保静态请求不会被转发到WSGI:RewriteRule ^static/ - [L] - 完整的.htaccess示例(适配WSGI部署):
RewriteEngine On RewriteRule ^static/ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ passenger_wsgi.py [L]
4. 验证静态文件可访问性
- 直接在浏览器地址栏输入静态文件的完整URL,比如
https://sub.yourdomain.com/static/css/main.css:- 若返回404,检查
STATIC_ROOT路径是否与文件实际存放位置一致,同时确认cPanel中二级域名的文档根目录配置正确 - 查看浏览器控制台的网络请求错误,确认请求路径与
STATIC_URL配置是否匹配
- 若返回404,检查
5. 排查教程中的误区
- 部分旧教程默认针对主域名部署,未考虑二级域名的文档根独立配置,需确保
STATIC_ROOT严格对应二级域名的可访问目录,而非主域名的public_html根目录
内容的提问来源于stack exchange,提问作者y2k95
相关产品推荐
相关产品推荐

