# ==============================================================================
# SVKM UPG COLLEGE WEB PORTAL - APACHE REWRITE RULES (STATIC HTML / CSS / JS)
# 100% Native Apache Deployment (Zero Node.js Server Needed)
# ==============================================================================

# Directory default index document
DirectoryIndex index.html index.php

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # 1. Enable Authorization Header forwarding for PHP JWT
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # --------------------------------------------------------------------------
    # 2. 301 Permanent Redirects for Legacy URLs (Google Index, Search Snippets & Bookmarks)
    # --------------------------------------------------------------------------
    # BMM / BAMMC (e.g. /BMM/M__15.html, /bmm, /bammc, /academics/bmm)
    RewriteCond %{THE_REQUEST} (?:/BMM(?:/|\.html|\s)|/bammc(?:/|\.html|\s)|/academics/bmm(?:/|\s)) [NC]
    RewriteRule ^.*$ /academics/bammc/ [R=301,L]
    RewriteRule ^(?i)BMM(/.*)?$ /academics/bammc/ [R=301,L]
    RewriteRule ^(?i)academics/bmm(/.*)?$ /academics/bammc/ [R=301,L]
    RewriteRule ^(?i)BA[\s_+-]*MMC(/.*)?$ /academics/bammc/ [R=301,L]

    # BSc IT (e.g. /BSc IT/M__16.html, /BSc%20IT/..., /BSCIT/..., /bscit)
    RewriteCond %{THE_REQUEST} (?:BSc[+%20\s]+IT|BScIT|bsc-it) [NC]
    RewriteRule ^.*$ /academics/bsc-it/ [R=301,L]
    RewriteRule ^(?i)bsc[\s_+-]+it(/.*)?$ /academics/bsc-it/ [R=301,L]
    RewriteRule ^(?i)bscit(/.*)?$ /academics/bsc-it/ [R=301,L]

    # BMS / B.Com Management Studies (e.g. /BMS/M__14.html, /bms, /academics/bms)
    RewriteCond %{THE_REQUEST} (?:/BMS(?:/|\.html|\s)|/academics/bms(?:/|\s)|bcom-management-studies) [NC]
    RewriteRule ^.*$ /academics/bcom-management-studies/ [R=301,L]
    RewriteRule ^(?i)BMS(/.*)?$ /academics/bcom-management-studies/ [R=301,L]
    RewriteRule ^(?i)academics/bms(/.*)?$ /academics/bcom-management-studies/ [R=301,L]
    RewriteRule ^(?i)b[\s_.]*com[\s_+-]*management[\s_+-]*studies(/.*)?$ /academics/bcom-management-studies/ [R=301,L]

    # BSc AI & DS (e.g. /BSc AIDS/..., /BSc AI&DS/...)
    RewriteCond %{THE_REQUEST} (?:BSc[+%20\s]*(?:AI|AIDS)|BSCAIDS) [NC]
    RewriteRule ^.*$ /academics/bsc-aids/ [R=301,L]
    RewriteRule ^(?i)bsc[\s_+-]*(?:ai|aids)(/.*)?$ /academics/bsc-aids/ [R=301,L]

    # MSc IT
    RewriteCond %{THE_REQUEST} (?:MSc[+%20\s]+IT|MScIT|msc-it) [NC]
    RewriteRule ^.*$ /academics/msc-it/ [R=301,L]
    RewriteRule ^(?i)msc[\s_+-]+it(/.*)?$ /academics/msc-it/ [R=301,L]
    RewriteRule ^(?i)mscit(/.*)?$ /academics/msc-it/ [R=301,L]

    # MSc AI & DS
    RewriteCond %{THE_REQUEST} (?:MSc[+%20\s]*(?:AI|AIDS)|MSCAIDS) [NC]
    RewriteRule ^.*$ /academics/msc-aids/ [R=301,L]
    RewriteRule ^(?i)msc[\s_+-]*(?:ai|aids)(/.*)?$ /academics/msc-aids/ [R=301,L]

    # BA FTNMP
    RewriteCond %{THE_REQUEST} (?:BA[+%20\s]*FTNMP|BAFTNMP) [NC]
    RewriteRule ^.*$ /academics/baftnmp/ [R=301,L]
    RewriteRule ^(?i)ba[\s_+-]*ftnmp(/.*)?$ /academics/baftnmp/ [R=301,L]

    # MA EMA
    RewriteCond %{THE_REQUEST} (?:MA[+%20\s]*EMA|MAEMA) [NC]
    RewriteRule ^.*$ /academics/ma-ema/ [R=301,L]
    RewriteRule ^(?i)ma[\s_+-]*ema(/.*)?$ /academics/ma-ema/ [R=301,L]

    # MA MC FTNM
    RewriteCond %{THE_REQUEST} (?:MA[+%20\s]*(?:MC|FTNM)|MAMC) [NC]
    RewriteRule ^.*$ /academics/ma-mc-ftnm/ [R=301,L]
    RewriteRule ^(?i)ma[\s_+-]*mc.*$ /academics/ma-mc-ftnm/ [R=301,L]

    # Merit Lists / Admissions legacy archives
    RewriteCond %{THE_REQUEST} Merit[+%20\s]*List [NC]
    RewriteRule ^.*$ /notices/ [R=301,L]
    RewriteRule ^(?i)merit[\s_+-]*list.*$ /notices/ [R=301,L]
    RewriteRule ^(?i)Admissions?(/.*)?$ /academics/ [R=301,L]

    # General Academic / Programmes legacy link
    RewriteRule ^(?i)Programmes?(/.*)?$ /academics/ [R=301,L]
    RewriteRule ^(?i)Courses?(/.*)?$ /academics/ [R=301,L]

    # Placements
    RewriteCond %{THE_REQUEST} Placement [NC]
    RewriteRule ^.*$ /pages/placement-cell/ [R=301,L]
    RewriteRule ^(?i)Placements?(/.*)?$ /pages/placement-cell/ [R=301,L]

    # About / Principal / Messages
    RewriteRule ^(?i)Principal(/.*)?$ /about/messages/ [R=301,L]
    RewriteRule ^(?i)President(/.*)?$ /about/messages/ [R=301,L]
    RewriteRule ^(?i)Messages?\.html$ /about/messages/ [R=301,L]
    RewriteRule ^(?i)About[\s_+-]*Us?\.html$ /about/upgcasc/ [R=301,L]
    RewriteRule ^(?i)SVKM.*$ /about/svkm/ [R=301,L]
    RewriteRule ^(?i)Governance.*$ /about/governance/ [R=301,L]

    # Committees & Student Council
    RewriteRule ^(?i)Student[\s_+-]*Council.*$ /pages/student-council/ [R=301,L]
    RewriteRule ^(?i)Cultural[\s_+-]*Committee.*$ /pages/cultural-committee/ [R=301,L]

    # Contact
    RewriteCond %{THE_REQUEST} Contact[+%20\s]*Us? [NC]
    RewriteRule ^.*$ /contact/ [R=301,L]
    RewriteRule ^(?i)Contact[\s_+-]*Us?(/.*)?$ /contact/ [R=301,L]

    # --------------------------------------------------------------------------
    # 3. Rewrite non-public api requests (/api/v1/...) to PHP backend
    # --------------------------------------------------------------------------
    RewriteCond %{REQUEST_URI} !^.*/(backend|api)/public/
    RewriteCond %{DOCUMENT_ROOT}/backend/public/index.php -f
    RewriteRule ^api/(.*)$ backend/public/index.php [L,QSA]

    RewriteCond %{REQUEST_URI} !^.*/(backend|api)/public/
    RewriteRule ^api/(.*)$ api/public/index.php [L,QSA]

    # --------------------------------------------------------------------------
    # 4. Serve Uploaded Assets directly from backend/public/uploads or api/public/uploads
    # --------------------------------------------------------------------------
    RewriteCond %{REQUEST_URI} ^.*/uploads/(.*)$
    RewriteCond %{DOCUMENT_ROOT}/backend/public/uploads/$1 -f
    RewriteRule ^uploads/(.*)$ backend/public/uploads/$1 [L]

    RewriteCond %{REQUEST_URI} ^.*/uploads/(.*)$
    RewriteRule ^uploads/(.*)$ api/public/uploads/$1 [L]

    # --------------------------------------------------------------------------
    # 5. Clean URL Handling for Pre-rendered HTML Directories
    # --------------------------------------------------------------------------
    RewriteRule ^$ index.html [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}/index.html -f
    RewriteRule ^(.+)/?$ $1/index.html [L]

    # --------------------------------------------------------------------------
    # 6. Clean URL Handling for Pre-rendered HTML Files
    # --------------------------------------------------------------------------
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^(.+)$ $1.html [L]

    # --------------------------------------------------------------------------
    # 7. RSC Data Payload Handling (map route.txt to route/index.txt)
    # --------------------------------------------------------------------------
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^.]+)\.txt$ $1/index.txt [L]
</IfModule>

# Caching & MIME types
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/html "access plus 0 seconds"
    ExpiresByType text/css "access plus 1 year"
    ExpiresByType application/javascript "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 year"
    ExpiresByType application/pdf "access plus 1 month"
</IfModule>

# Fallback 404 handler
ErrorDocument 404 /404.html
