# ============================================================
# Yikai CMS 最小伪静态规则（WordPress 兼容模式）
#
# 路由部分与 WordPress 的规则同构，但多了一条敏感目录拦截：WordPress 预设
# 不封禁 storage/ 等目录，SQLite 站点的 storage/database.sqlite 会被直接下载，
# 所以不要只选面板的「WordPress 伪静态」预设，请使用本文件。
#
# 原理：所有不存在的路径统一交给 index.php，由程序内置的 Dispatcher
# 完成伪静态分发（v1.12.9+）。
#
# 与根目录完整版 .htaccess 的取舍：
#   完整版：静态 HTML 由服务器直出（性能最好）+ 敏感文件访问在服务器层拦截 —— 推荐
#   最小版：兼容一切支持 WP 的主机；静态直出与 404 由 PHP 兜底，性能略低
# 能用完整版就用完整版；受限主机（面板只给 WP 预设/指令受限）用本文件。
# ============================================================
<IfModule mod_rewrite.c>
RewriteEngine On
# 本站网址前缀：根目录为 /，子目录部署为 /sub/。与根目录 .htaccess 同一写法，
# 不写死 RewriteBase——同一份文件放在域名根或任意子目录都能用。
RewriteCond %{REQUEST_URI}::$1 ^(.*/)(.*)::\2$
RewriteRule ^(.*)$ - [E=YK_BASE:%1]
# 敏感目录与文件：配置、运行数据（含 SQLite 数据库）、程序与初始 SQL 一律 403
RewriteRule ^(config|storage|vendor|includes|install/sql|bin|migrations|recipes)(/|$) - [F,L]
# 已安装后封禁整个 install/（删除 installed.lock 即可临时重开）
RewriteCond %{DOCUMENT_ROOT}%{ENV:YK_BASE}installed.lock -f
RewriteRule ^install/ - [F,L]
RewriteRule (^|/)\.(git|env|htpasswd) - [F,L]
RewriteRule ^(composer\.(json|lock)|package(-lock)?\.json)$ - [F,L]
# 文档 / SQL / 备份 / 部署样例：不该被当静态文件下载
RewriteRule \.(md|sql|bak|example|dist|conf|lock|yml|yaml)$ - [F,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . %{ENV:YK_BASE}index.php [L]
</IfModule>

# nginx 等价写法：宝塔用 deploy/nginx-baota.conf（include 一行即可），
# 阿里云 / 万网 NGINX 型主机用 deploy/aliyun-nginx-minimal.txt，自管服务器用 deploy/nginx-server.conf。
# 不要只写 location / { try_files ... } ——它不封禁敏感目录。
