FallbackResource 是 Apache 2.2.16+ 专为 SPA 设计的兜底路由指令,配置在 块内,指定 URI(如 /index.html 或 /app/index.html)实现刷新不 404;仅对不存在的资源生效,不影响静态文件和真实 API,无需 mod_rewrite,且必须配合前端 History 模式使用。

FallbackResource 是 Apache 2.2.16+ 提供的原生指令,专为单页应用(SPA)设计,用一条配置就能替代复杂的 mod_rewrite 规则,实现刷新页面不 404 的效果。它本质是“兜底路由”,当请求的资源不存在时,自动返回指定文件(通常是 index.html),让前端路由接管。
必须放在 <directory></directory> 块内,且路径需正确
不能写在 VirtualHost 或 Server 顶层,而要嵌套在服务静态文件的目录配置中。例如:
<Directory "/var/www/my-spa">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
FallbackResource /index.html
</Directory>注意:/index.html 是URI 路径,不是文件系统路径。它表示“所有未命中资源时,返回根目录下的 index.html”。Apache 会自动将该 URI 映射到 DocumentRoot 下的实际文件。
子路径部署需同步调整 URI 路径
如果应用部署在 https://example.com/app/,前端设置了 base="/app/",那么 FallbackResource 必须写成:
FallbackResource /app/index.html
否则请求 /app/user 会被兜底到 /index.html,导致 404 或加载错入口文件。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
它只对“找不到的资源”生效,不影响静态文件和 API
-
.js、.css、图片等真实存在的文件照常返回,不会被兜底; -
/api/login这类路径若真实存在(比如由后端代理或 CGI 处理),也不会触发FallbackResource; - 只有当 Apache 查找
/user/profile对应的物理文件失败时,才启用兜底。
不需要额外开启 mod_rewrite 或设置 RewriteEngine
这是 FallbackResource 的核心优势——简洁、安全、无副作用。相比 RewriteRule ^(.*)$ /index.html [L],它不重写 URL、不干扰 Location 响应头、不引发循环或权限问题。
配合前端必须用 History 模式
FallbackResource 仅适用于 HTML5 History 模式(vue-router 的 history 模式、react-router 的 BrowserRouter)。Hash 模式(#/user)无需任何服务端配置,因为 # 后内容根本不会发给服务器。
常见错误提醒
- 写成
FallbackResource index.html(缺开头斜杠)→ Apache 会当作相对路径解析,大概率失败; - 放在
<location></location>或<locationmatch></locationmatch>块里 → 该指令不支持这些上下文,会报语法错误; -
DocumentRoot和Directory路径不一致 → 导致兜底文件找不到,返回 404; - 忘记设
Require all granted(Apache 2.4+)→ 权限拒绝,返回 403 而非兜底。
基本上就这些。


















