# ============================================
# 彤宸工坊 · 造价工作台 - Apache 配置
# 禁止直接访问敏感目录，自定义错误页面
# ============================================

# 启用 Rewrite 引擎
RewriteEngine On

# ============================================
# 一、自定义错误页面
# ============================================
ErrorDocument 404 /error/404.html
ErrorDocument 403 /error/403.html
ErrorDocument 500 /error/500.html
ErrorDocument 400 /error/400.html
ErrorDocument 401 /error/401.html

# ============================================
# 二、URL 重写规则
# ============================================

# 如果请求的是真实存在的文件或目录，直接访问
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# 将所有其他请求指向 index.php（支持 pathinfo 风格）
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

# ============================================
# 三、禁止访问敏感目录和文件
# ============================================

# 禁止访问 data/ 目录（包含数据库文件）
<DirectoryMatch "^/?(data|includes|pages|project)/">
    Order Allow,Deny
    Deny from all
</DirectoryMatch>

# 禁止访问 .db、.sqlite、.license 等敏感文件
<FilesMatch "\.(db|sqlite|sqlite3|license|log)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

# 禁止访问 .htaccess、.git 等隐藏文件
<FilesMatch "^\.(htaccess|htpasswd|git)">
    Order Allow,Deny
    Deny from all
</FilesMatch>

# 禁止目录浏览
Options -Indexes

# ============================================
# 四、性能与安全优化（可选）
# ============================================

# 设置默认字符集
AddDefaultCharset UTF-8

# 隐藏服务器签名
ServerSignature Off

# 防止点击劫持
Header always append X-Frame-Options SAMEORIGIN

# 启用 Gzip 压缩（如果 mod_deflate 可用）
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/json
</IfModule>