# =====================================================================
# estertics - Web Root Apache Configuration (.htaccess)
# =====================================================================

# 1. Disable Directory Index Browsing
Options -Indexes -MultiViews

# 2. Rewrite Engine & Clean URLs
<IfModule mod_rewrite.c>
    RewriteEngine On

    # Enforce HTTPS redirect (safe for standard cPanel and Cloudflare/Reverse Proxy)
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # Article permalinks: /article/slug-title -> article.php?slug=slug-title
    RewriteRule ^article/([a-zA-Z0-9_-]+)/?$ article.php?slug=$1 [L,QSA]
</IfModule>

# 3. Block Hidden Files (dotfiles) and Sensitive Files
<FilesMatch "^\.">
    Require all denied
</FilesMatch>

<FilesMatch "\.(env|ini|log|sql|bak|old|swp|sh|md|lock|git|svn)$">
    Require all denied
</FilesMatch>

# Allow public manifest.json
<Files "manifest.json">
    Require all granted
</Files>

# 4. Security Headers
<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
    Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data: blob:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.tailwindcss.com https://cdn.tiny.cloud; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://cdn.tiny.cloud; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://cdn.tiny.cloud; frame-src 'self'"
    Header unset X-Powered-By
    Header always unset X-Powered-By
</IfModule>
