You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django+Apache2部署静态文件出现URLconf匹配错误求助

解决Django 1.11静态文件加载失败的问题

你的问题核心出在静态文件配置的两个关键错误上:settings里的参数名写错了,同时urls.py没有处理静态文件的请求路由。下面一步步帮你修复:

1. 修正settings.py中的静态文件配置

你当前写的STATICFILES_DIR是单数,而Django要求的参数名是复数形式STATICFILES_DIRS,并且它的值需要是一个列表(哪怕只有一个目录)。另外,建议用项目根目录的相对路径配置,避免硬编码绝对路径更灵活:

# 先导入os模块(如果没导入的话)
import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

STATIC_URL = '/static/'
# 配置静态文件目录,指向项目根目录下的static文件夹
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    # 如果还有其他静态目录,可以继续添加到列表里
]

# STATIC_ROOT仅在生产环境部署时需要,开发环境可以暂时注释
# STATIC_ROOT = '/var/www/html/aerocredRoot/static_collected'

如果你的静态文件确实放在/var/www/html/aerocredRoot/static,也可以直接把绝对路径写进列表,但用BASE_DIR拼接更适合项目迁移。

2. 给urls.py添加静态文件路由

Django的开发服务器默认不会自动处理/static/开头的请求,你需要手动在urls.py中添加路由规则,让服务器知道去哪里找这些静态文件:

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.conf.urls import url, include
from . import views

urlpatterns = [
    url(r'^$', views.index),  # 你原来写的^%应该是笔误,改成^$匹配首页
    url(r'^admin/', include(admin.site.urls)),
]

# 开发环境下添加静态文件路由,仅当DEBUG=True时生效
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    # 如果你更想直接指向STATICFILES_DIRS里的目录,也可以这么写:
    # urlpatterns += static(settings.STATIC_URL, document_root=os.path.join(settings.BASE_DIR, 'static'))

3. 验证修复效果

  1. 重启Django开发服务器(修改settings和urls后必须重启才会生效)
  2. 刷新浏览器,检查网络请求里的静态文件是否能正常加载

额外注意点

  • 确保settings.DEBUG设置为True(开发环境下保持这个状态即可),如果DEBUG=False,开发服务器不会处理静态文件,这时候才需要用collectstatic把文件收集到STATIC_ROOT,再用Nginx/Apache等服务器托管静态文件。
  • 你之前尝试的collectstatic是生产环境部署用的,开发环境下完全不需要执行这个命令。

内容的提问来源于stack exchange,提问作者Pyroadrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:18:33