# ============================================================
# 老李站长SEO工具 · 根目录 Apache 配置
# 上传到二级目录（如 /llseo/）后本文件即生效，无需修改；
# 若主机要求指定 RewriteBase，请取消下面一行注释并改成实际目录。
# 未经许可不得复制、分发或用于商业用途
# ============================================================

Options -Indexes
DirectoryIndex index.php index.html

<IfModule mod_rewrite.c>
    RewriteEngine On

    # 二级目录部署时一般无需 RewriteBase；虚拟主机报错可放开这行
    # RewriteBase /llseo/

    # 敏感目录直接拒绝（安装向导 install/ 需要访问，故不在此拦截）
    RewriteRule ^(app|data)(/|$) - [F,L]

    # 非真实文件、非真实目录 → 交给统一入口 index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

# ------------------------------------------------------------
# 敏感文件类型拒绝访问（数据库文件、日志、配置、模板缓存）
# ------------------------------------------------------------
<FilesMatch "\.(sqlite|sqlite3|db|log|ini|conf|lock|sh|swp|htaccess|htpasswd|tpl\.cache)$">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Deny from all
    </IfModule>
</FilesMatch>

# 隐藏文件（.htaccess、.git* 等）
<IfModule mod_rewrite.c>
    RewriteRule (^|/)\.(?!well-known) - [F,L]
</IfModule>

# ------------------------------------------------------------
# 安全响应头（已在 index.php 输出的此处不重复）
# ------------------------------------------------------------
<IfModule mod_headers.c>
    Header set X-Content-Type-Options "nosniff"
    Header set X-Frame-Options "SAMEORIGIN"
    Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

# ------------------------------------------------------------
# 静态资源缓存与压缩
# ------------------------------------------------------------
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 7 days"
    ExpiresByType application/javascript "access plus 7 days"
    ExpiresByType image/png "access plus 30 days"
    ExpiresByType image/jpeg "access plus 30 days"
    ExpiresByType image/svg+xml "access plus 30 days"
    ExpiresByType image/x-icon "access plus 90 days"
    ExpiresByType font/woff2 "access plus 90 days"
    ExpiresByType text/html "access plus 0 seconds"
</IfModule>

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json image/svg+xml
</IfModule>
