DEBUG设为False时静态文件无法加载的问题求助
核心原因
当DEBUG=False时,你在urls.py中通过static()添加的静态文件路由不会生效——Django在生产环境下不会负责静态文件的分发,必须让cPanel的Web服务器(通常是Apache)直接处理静态和媒体文件的请求。
分步解决方案
确认collectstatic执行结果
登录cPanel的文件管理器,检查/home/smartsbi/public_html/static目录下是否存在所有静态文件(css、js、图片等)。如果为空,重新在虚拟环境中执行python manage.py collectstatic,执行时注意确认文件是否成功复制,且目录所有者为smartsbi(避免权限问题)。配置Apache静态文件映射(通过.htaccess)
在public_html目录下找到.htaccess文件(如果没有就新建一个),添加以下规则,让Apache直接处理/static和/media路径的请求:Alias /static /home/smartsbi/public_html/static <Directory /home/smartsbi/public_html/static> Require all granted </Directory> Alias /media /home/smartsbi/public_html/media <Directory /home/smartsbi/public_html/media> Require all granted </Directory>保存后重启Apache(cPanel中可通过"Restart Apache"功能操作)。
检查媒体目录权限
确保/home/smartsbi/public_html/media目录权限设为755,目录内文件权限设为644,且所有者为你的cPanel用户名smartsbi,避免Web服务器无法读取上传的媒体文件。验证ALLOWED_HOSTS配置
在settings.py中确认ALLOWED_HOSTS已正确设置,比如:ALLOWED_HOSTS = ['你的域名.com', 'www.你的域名.com']若HOSTS配置错误,Django会拒绝请求,也可能间接导致静态文件加载失败。
强制刷新浏览器缓存
按Ctrl+Shift+R强制刷新页面,清除浏览器缓存的旧静态文件路径,确认新路径是否生效。
内容的提问来源于stack exchange,提问作者Pøyå Shadman

