如果你手里有一批域名,想要一个页面:
- 看起来体面
- 别人一眼就能搜到、筛到
- 自己更新也方便
那 EvanMi 就是为这件事准备的。
- 有域名要展示、要报价、要整理的人
- 不想折腾数据库、登录系统、复杂功能的人
- 想要“好看 + 好用 + 快”的人
EvanMi = 一个好看的展示页 + 一个够用的管理后台。
把你的域名清单变成一个随时可更新的米表,发出去也更专业。
-
演示网站:https://mrmi.top
-
公众号:
-
打赏码(微信&支付宝二合一,方便哈哈):
解压后大致是这些:
index.html:前台(原始 UI)admin/:后台(管理、导入、公告/链接设置等)api.php:数据读写接口(PHP)domains.json:域名数据(后台管理/导入会覆盖写入这个文件)site_config.json:站点内容配置(公告弹窗 + Other Links)
其中:
- 前台默认走
GET api.php拉取domains.json - 前台默认走
GET api.php?type=config拉取site_config.json - 后台保存域名:
POST api.php(type=domains) - 后台保存公告/链接:
POST api.php(type=config)
- 进入宝塔面板 → 网站 → 添加站点
- 填:
- 域名:你的域名(例如
mi.cd/www.mi.cd) - 根目录:宝塔自动生成即可(例如
/www/wwwroot/mi.cd)
- 域名:你的域名(例如
- PHP 版本:选择任意可用的 PHP(建议 7.4/8.0/8.1)
EvanMi 不需要数据库。
- 在宝塔面板 → 文件 → 进入站点根目录(例如
/www/wwwroot/mi.cd) - 上传
MiCD_deploy_originalUI_v3.zip - 解压后,把解压出来的文件 移动到站点根目录,确保最终结构类似:
/www/wwwroot/mi.cd/
index.html
api.php
domains.json
site_config.json
admin/
...
关键点:
index.html、api.php、domains.json、site_config.json必须与admin/同级。
宝塔一般默认就会识别 index.html,但建议确认一下:
- 网站 → 设置 → 默认文档:确保包含
index.html(放在靠前位置)
Mi.CD 前台是静态页,后台是独立目录(/admin/)。一般不需要复杂伪静态。
如果你想更稳一点(例如某些环境对 404 路由处理较严格),可以保持站点根目录存在 404.html。
如果你后续想做“漂亮 URL”(比如
/admin直接进后台),那才需要额外伪静态规则;本项目目前不建议把网站搞复杂。
因为后台要写入:
domains.jsonsite_config.json
所以需要保证 Web 服务用户对这两个文件 有写权限。
在宝塔 → 文件管理里,选中:
domains.jsonsite_config.json
设置权限为:
- 644 通常即可(前提是文件属主/属组正确)
如果遇到写入失败(后台保存报错),再退一步:
- 664 或临时 666(不推荐长期 666)
更稳妥的做法是把文件属主改为 Web 服务用户(例如
www),但不同系统不同;宝塔里可视化操作即可。
- 当前后台访问密钥:
mi.cd@
修改位置(如果你未来要改):后台里面可以直接修改密码。
- 打开前台页面,左下角有一个“锁”图标
- 输入密钥:
mi.cd@ - 跳转到后台:
/admin/
后台 → 域名管理 → 批量导入:
- 支持粘贴文本或上传 CSV/TXT
- 导入后会 直接覆盖 现有
domains.json(确保数据永远最新)
后台左侧菜单:公告 / Other Links
- 公告:设置“标题 + 内容”,保存后前台弹窗即更新
- Other Links:添加/删除卡片(标题、URL、说明),保存后前台即更新
优先检查:
api.php是否在站点根目录,并且能被访问- PHP 是否启用(宝塔站点绑定了 PHP)
domains.json/site_config.json是否有写权限
- 让浏览器强制刷新(Ctrl/Cmd + Shift + R)
- 检查
api.php的 GET 是否能返回 JSON

