# ============================================================
#  老李壁纸系统 · Apache 伪静态（程序根目录）
#  本文件作用：站点根指向程序根目录时，把请求转发进 public/ 并挡住程序内部目录
#  文件路径：.htaccess
#  只用其中一个：本文件（Apache）、nginx.htaccess（Nginx）、web.config（IIS）
#  依赖 mod_rewrite + AllowOverride All；若面板要求指定 RewriteBase，
#  取消下面一行注释并改成实际目录。
# ============================================================

Options -Indexes +FollowSymLinks
DirectoryIndex index.php index.html
# RewriteBase /laoli-bizhi/

<IfModule mod_rewrite.c>
  RewriteEngine On

  # 0) 程序内部目录一律拒绝直接访问（纵深防御，正常请求走不到这里）
  RewriteRule ^(app|config|storage|database|templates)(/|$) - [F]
  # install/ 只挡文件，/install 本身留给安装向导
  RewriteRule ^install/.+\. - [F]

  # 1) 已经在 public/ 内的请求不再转发，避免死循环（20 次重定向 → 500）
  RewriteRule ^public/ - [L]

  # 2) 转发后确实是文件/目录的，直接当静态文件输出（uploads/ 图片、模板静态资源）
  RewriteCond %{DOCUMENT_ROOT}/public/$1 -f
  RewriteRule ^(.*)$ public/$1 [L]
  RewriteCond %{DOCUMENT_ROOT}/public/$1 -d
  RewriteRule ^(.*)$ public/$1 [L]

  # 3) 其余全部交给唯一入口，由路由解析 /list /c/nature /w/123 /user/... /admin/...
  RewriteRule ^(.*)$ public/index.php [L,QSA]
</IfModule>

# 兜底防护：即使 document root 配错，也拿不到数据文件
<FilesMatch "\.(sql|log|md|ini|sh|bak|swp|env|lock)$">
  <IfModule mod_authz_core.c>
    Require all denied
  </IfModule>
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
</FilesMatch>

<IfModule !mod_rewrite.c>
  ErrorDocument 500 "未启用 mod_rewrite：请把网站根目录设为 public/，或在 Apache 配置里 LoadModule rewrite_module。"
</IfModule>
