# =========================================================
# VHXCORE CMS — .htaccess
# =========================================================

# Кодировка
AddDefaultCharset UTF-8

# Главный файл
DirectoryIndex index.php index.html

# Отключаем листинг директорий
Options -Indexes

# Следуем симлинкам
Options +FollowSymLinks

# =========================================================
# ЗАЩИТА ФАЙЛОВ
# =========================================================

# Служебные файлы
<FilesMatch "^(\.htaccess|\.htpasswd|\.gitignore|\.env|composer\.(json|lock)|package\.(json|lock)|README\.md|CHANGELOG\.md)$">
    Require all denied
</FilesMatch>

# Конфиг
<Files "config.php">
    Require all denied
</Files>

# Lock-файл установки
<Files "installed.lock">
    Require all denied
</Files>

# Скрытые файлы и папки
<FilesMatch "^\.">
    Require all denied
</FilesMatch>

# =========================================================
# БЕЗОПАСНЫЕ ЗАГОЛОВКИ
# =========================================================
<IfModule mod_headers.c>
    Header set X-Content-Type-Options "nosniff"
    Header set X-Frame-Options "SAMEORIGIN"
    Header set X-XSS-Protection "1; mode=block"
    Header set Referrer-Policy "strict-origin-when-cross-origin"
    Header unset X-Powered-By
</IfModule>

# =========================================================
# КЕШ СТАТИКИ
# =========================================================
<IfModule mod_expires.c>
    ExpiresActive On

    ExpiresByType image/jpeg        "access plus 30 days"
    ExpiresByType image/png         "access plus 30 days"
    ExpiresByType image/gif         "access plus 30 days"
    ExpiresByType image/webp        "access plus 30 days"
    ExpiresByType image/svg+xml     "access plus 30 days"
    ExpiresByType image/x-icon      "access plus 30 days"

    ExpiresByType text/css          "access plus 7 days"
    ExpiresByType application/javascript "access plus 7 days"

    ExpiresByType font/woff         "access plus 30 days"
    ExpiresByType font/woff2        "access plus 30 days"
</IfModule>

# =========================================================
# СЖАТИЕ
# =========================================================
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

# =========================================================
# MIME
# =========================================================
<IfModule mod_mime.c>
    AddType image/webp              .webp
    AddType image/svg+xml           .svg
    AddType font/woff               .woff
    AddType font/woff2              .woff2
</IfModule>