apache与tomcat动静分离后静态资源404,核心原因是apache未正确映射或授权访问静态文件目录,需检查documentroot匹配性、alias配置、权限、url路径一致性及selinux/文件权限。

Apache 中 Tomcat 做动静分离后出现静态资源 404,核心原因通常是 Apache 没有正确找到或授权访问这些文件。不是路径写错了,就是权限或别名没配对。
检查静态资源存放位置和 DocumentRoot 是否匹配
Apache 默认只从 DocumentRoot 目录下提供静态文件。如果你把 CSS、JS、图片放在 Tomcat 的 webapps/ROOT 下,而 Apache 的 DocumentRoot 指向的是 /var/www/html,那它根本不会去 Tomcat 目录里找——自然 404。
- 确认静态资源实际存放在哪:比如统一放到 /var/www/static 或 /opt/app/static
- 检查 Apache 配置中 DocumentRoot 的值是否与之对应
- 如果想复用 Tomcat 的 static 目录(如 webapps/ROOT/static),需通过 Alias 显式映射,不能依赖 DocumentRoot 自动覆盖
确保 Alias 和 权限配置完整
仅用 Alias 声明路径映射还不够,Apache 默认禁止外部访问非 DocumentRoot 下的目录,必须配合
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 例如静态资源在 /opt/tomcat/webapps/ROOT/static,需添加:
Require all granted
- 注意路径末尾不加斜杠,大小写需与实际文件系统严格一致
- Require all granted 是 Apache 2.4+ 的写法;若用 2.2,应写成 Order allow,deny + Allow from all
验证 URL 路径与前端引用是否一致
前端 HTML 或 JS 中写的路径,必须和 Apache 中配置的 Alias 路径前缀完全匹配。比如配置了 Alias /static,那页面中就得用 /static/style.css,不能写成 /assets/style.css 或 ./style.css。
- 浏览器按 F12 查看 Network 标签,点开 404 请求,看“Request URL”具体是什么
- 对比 Apache 的 Alias 定义,确认前缀是否缺失、多写或拼错
- 若项目用了构建工具(如 Webpack/Vue CLI),检查 public 目录是否被正确拷贝,以及 publicPath 配置是否适配了 /static
排查 SELinux 或文件系统权限干扰
Linux 系统上,即使 Apache 配置全对,SELinux 或文件属主权限也可能拦住读取。
- 临时关闭 SELinux 测试:setenforce 0,若 404 消失,说明是策略限制,需用 chcon -R -t httpd_sys_content_t /path/to/static 授权
- 检查静态目录及文件属主是否为 apache 或 root,且至少有 r-x(目录)和 r--(文件)权限
- 避免使用 root 用户启动 Apache,推荐用 apache 用户运行,并确保其对静态目录有访问权










