Options -Indexes
DirectoryIndex index.php
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /studytrack/

    # ── Service Worker — must be served as-is (no rewrite) ──────────
    RewriteRule ^sw\.js$ - [L]

    # ── api/ folder — no rewrites, serve PHP directly ────────────────
    RewriteRule ^api/ - [L]

    # Remove .php from URL — skip api/ folder
    RewriteCond %{REQUEST_URI} !^/studytrack/api/
    RewriteCond %{THE_REQUEST} /([^.]+)\.php[\s?] [NC]
    RewriteRule ^ /%1 [R=301,L,NE]

    # ── PHP extension hiding ─────────────────────────────────────────
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.+)$ $1.php [L,QSA]

    # New feature pages
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(timetable|goals|notes|reminders|report|achievements|leaderboard|ai-tips|grade-predictor|heatmap|daily-goal|xp|chat)$ $1.php [L,QSA]

    # ── Unknown routes → custom 404 page ────────────────────────────
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /studytrack/404 [R=302,L]
</IfModule>

# Custom 404 error document
ErrorDocument 404 /studytrack/404.php

# Protect config files
<FilesMatch "^(config|functions)\.php$">
    Order allow,deny
    Deny from all
</FilesMatch>

# Security headers
<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

# Prevent direct access to includes/
<IfModule mod_rewrite.c>
    RewriteRule ^includes/ - [F,L]
</IfModule>
