2026-09-28 15:48:35 +08:00
|
|
|
# SimpleNav —— 根目录安全规则
|
|
|
|
|
<IfModule mod_rewrite.c>
|
|
|
|
|
RewriteEngine On
|
|
|
|
|
RewriteRule ^data/ - [F,L]
|
|
|
|
|
RewriteRule ^\.git/ - [F,L]
|
|
|
|
|
</IfModule>
|
|
|
|
|
# 关闭目录浏览
|
|
|
|
|
Options -Indexes
|
2026-09-28 16:43:10 +08:00
|
|
|
|
|
|
|
|
# 根目录静态资源(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 里 n.yangyq.net 这节,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>
|