RewriteEngine On
RewriteBase /

# Une seule origine publique pour éviter les doublons HTTP et www.
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^justrec\.xyz$ [NC]
RewriteRule ^ https://justrec.xyz%{REQUEST_URI} [R=301,L,NE]

# Certains modes PHP/FastCGI retirent Authorization avant index.php.
# Le JWT reste ainsi disponible même après expiration du cookie PHPSESSID.
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%1]

# L'ancien journal est fusionné avec la page du projet.
RewriteRule ^journal-du-projet/?$ https://justrec.xyz/pourquoi-rec/ [R=301,L,NE]

# Les pages publiques pré-générées sont des dossiers : on impose leur URL canonique avec slash final.
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.+)$ https://justrec.xyz/$1/ [R=301,L,NE]

# Si le fichier ou dossier existe → OK
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# Secours pour les pages éditoriales publiques : elles restent accessibles au rechargement
# même si un hébergement n'a pas copié leur dossier HTML pré-généré. Quand le dossier existe,
# la règle précédente sert bien son index.html unique (métadonnées SEO, données structurées, etc.).
RewriteRule ^(?:capture-3d-sans-materiel-dedie|precision-2-cm|explorers|invitation-explorateur|representations-3d|application-universelle|photogrammetrie|pourquoi-rec|produits-que-nous-aimons|projets-que-nous-suivons|principes-qui-nous-inspirent|recolement-3d-tranchee-ouverte|cgu|connection|inscription|mot-de-passe-oublie|reinitialiser-mot-de-passe)/?$ index.html [L]

# Les seules routes virtuelles restantes appartiennent à l'application connectée.
RewriteRule ^(?:dashboard(?:/.*)?|tasks|projets|parametres|memoire|mon-compte|references)/?$ index.html [L]

# Toute autre adresse inconnue renvoie une vraie page 404.
ErrorDocument 404 /404.html
RewriteRule ^ - [R=404,L]

# Les ressources générées avec une empreinte dans leur nom peuvent être conservées durablement.
<IfModule mod_setenvif.c>
  SetEnvIf Request_URI "^/assets/" REC_IMMUTABLE=1
</IfModule>
<IfModule mod_headers.c>
  Header set Cache-Control "public, max-age=31536000, immutable" env=REC_IMMUTABLE
</IfModule>
