Files
laoyang 273074218c chore: 清除仓库中的开发者个人信息
面向公开仓库做一次脱敏,去掉与开发者个人绑定的域名、内网入口与环境路径。

- db.php:默认数据里的个人地址全部换成通用示例(原先是开发者的私有基础设施:
  带路径令牌的面板地址、若干内网服务入口,以及暴露学校身份的校内系统如教务 / BB / VPN / 财务)。
  分组结构(2 个网格板块 + 3 个合集板块)与条目数量保持不变,新装仍是一份可用的示例导航。
- README.md:去掉「复刻某站风格」的表述与示例路径里的个人域名;部署步骤改为通用写法
  (不再指向仓库外的私有脚本目录),并补上 Nginx 的 /data/ 拦截规则。
  顺带修正一处与实际不符的描述:原文档称「页面缓存插件无需任何特殊配置」,实测该插件读不到
  FastCGI 的 Cache-Control,实际是靠根 .htaccess 在请求侧注入 X_CACHE=1 才旁路掉的。
- .htaccess / config.php / functions.php / assets/css/style.css:注释里的个人域名改为通用表述。
- .gitignore:去掉开发者本机目录约定。
- LICENSE:版权署名由个人昵称改为 The SimpleNav Authors。

默认数据只在空库时写入,线上现有数据不受影响;本次无运行期行为变更。

验证:本地 php -l 全过;e2e 93/93;部署(双版本 php -l + 静态断言 + 文件哈希逐字节一致 +
HTTP 冒烟 + 缓存旁路自检 + Web 身份诊断)全绿,退出码 0。
2026-09-28 18:34:44 +08:00

41 lines
2.0 KiB
ApacheConf

# SimpleNav —— 根目录安全规则
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^data/ - [F,L]
RewriteRule ^\.git/ - [F,L]
</IfModule>
# 关闭目录浏览
Options -Indexes
# 根目录静态资源(favicon / apple-touch-icon / webmanifest)也走「长缓存 + 版本号」
# 注意:assets/ 下的资源由 assets/.htaccess 负责,这里只管根目录这几个文件。
<IfModule mod_headers.c>
<FilesMatch "\.(ico|png|svg|webmanifest)$">
Header set Cache-Control "public, max-age=31536000, immutable"
</FilesMatch>
</IfModule>
# ---------------------------------------------------------------------------
# 绕开「服务器侧整页缓存」
#
# 背景(2026-09-28 线上实测):服务器装了宝塔面板的「网站加速」,那是一层基于
# memcached 的整页缓存(脚本 /www/server/speed/httpd_speed.lua,站点配置
# /www/server/speed/config.lua 里该站点那一节,expire=30 秒)。它的缓存键
# 按 host:port + 完整 URI 计算,只缓存 GET 的 text/html。
#
# 关键坑:它**读不到 FastCGI 后端返回的 Cache-Control**(实测存下来的副本里
# 根本没有这个头),所以 PHP 里发的 no-store / no-cache 对它无效 —— 会出现
# 「后台改完,前台刷新还是旧的」,而且因为每次 MISS 都会重新写入,旧页面窗口
# 还会被后续访问不断续期(滑动 30 秒)。
#
# 它唯一认的「别缓存我」信号是**请求** cookie `X_CACHE=1`(它本来用于标记已登录
# 用户)。这里就在请求侧直接注入该标记:edit 处理「已经有 Cookie」的情况,
# setifempty 处理「完全没有 Cookie」的首次访问。
#
# 若哪天不需要了(例如该站点已关闭「网站加速」),整段删掉即可。
# ---------------------------------------------------------------------------
<IfModule mod_headers.c>
RequestHeader edit Cookie "^(.*)$" "$1; X_CACHE=1"
RequestHeader setifempty Cookie "X_CACHE=1"
</IfModule>