directoryindex指令用于指定目录访问时默认返回的文件,需在或.htaccess中配置、空格分隔多值、大小写敏感,修改后须重载配置;它不处理逻辑,仅静态匹配文件,配合.json文件可实现零代码mock方案。

Apache 的 DirectoryIndex 指令本身不生成数据,也不处理请求逻辑,但它可以配合静态文件结构,实现一种极简、零代码的“静态 mockup”方案——特别适合原型展示、UI联调、文档预览等无需动态响应的场景。
核心思路是:把 JSON 响应直接写成 .json 文件,放在 Web 目录下,用 DirectoryIndex 指向一个默认入口页(如 index.html),再通过前端路由或简单链接跳转到对应 mock 数据文件,绕过后端,全静态交付。
✅ 用 DirectoryIndex 搭建静态 mockup 的关键配置
确保 Apache 启用了 mod_dir(默认启用),并在站点配置或 .htaccess 中设置:
DirectoryIndex index.html
这意味着当访问目录路径(如 http://localhost/api/)时,Apache 自动返回该目录下的 index.html,而不是目录列表。
⚠️ 注意:
DirectoryIndex只控制“目录被访问时返回哪个文件”,它不代理、不重写、不解析参数——所以必须靠“文件即接口”的约定来模拟 API。
? 目录结构即 API 路由(约定优于配置)
把每个 mock 接口对应一个真实 JSON 文件,路径与真实 API 保持一致:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
/var/www/html/api/ ├── users/ │ ├── index.json ← GET /api/users/ → 返回用户列表 │ └── 123.json ← GET /api/users/123 → 返回单个用户 ├── orders/ │ └── recent.json ← GET /api/orders/recent └── index.html ← DirectoryIndex 入口页,可放测试链接或 Swagger UI
访问 http://api.dev/users/ 就自动读取 /users/index.json;
访问 http://api.dev/users/123 就直接返回 /users/123.json(需确保 MultiViews 关闭,避免歧义)。
? 必要的 Apache 补充配置(防止意外行为)
在虚拟主机或 <directory></directory> 块中加入:
# 禁用目录浏览(安全+整洁) Options -Indexes # 确保 JSON 文件正确识别为 application/json AddType application/json .json # 可选:支持 CORS(仅开发阶段) Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
✅ 这样前端用
fetch('/api/users/')就能拿到index.json内容,完全不需要后端进程。
? 配合虚拟域名更贴近真实环境
和 PHP Mock 方案一样,在 /etc/hosts 加:
127.0.0.1 api.dev
Apache 虚拟主机指向该目录:
<virtualhost>
ServerName api.dev
DocumentRoot /var/www/html/api
<directory>
Require all granted
DirectoryIndex index.html
</directory></virtualhost>
前端代码写 fetch('https://api.dev/users/'),上线时只需改域名,路径零改动。
? 对比其他 mock 方式:它适合什么场景?
- ✅ 极快启动:不用装 Node、不写代码、不启服务,放好文件就能跑
- ✅ 纯静态托管友好:可直接部署到 GitHub Pages、Vercel、Nginx、甚至 CDN
- ✅ UI 团队专用:设计师/前端验证页面渲染、状态、空数据、错误提示等视觉逻辑
- ❌ 不适合:需要参数解析(如
?page=2)、POST 请求体校验、状态码切换(如 404/500)、延迟模拟、权限逻辑
如果需要这些能力,就该升级到 PHP Mock、MSW 或 Apifox ——但对“看效果、测样式、走通流程”来说,DirectoryIndex + .json 文件 是最轻、最稳、最透明的方式。










