diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..f7d5bec --- /dev/null +++ b/.htaccess @@ -0,0 +1,37 @@ +Options -Indexes + +# 1. On définit des URLs propres pour les erreurs +ErrorDocument 403 /error/error_403 +ErrorDocument 404 /error/error_404 + +# --- Sécurité --- + + Require all denied + + + + Require all denied + + +RewriteEngine On + +# 2. Bloquer l'accès direct au dossier vendor +RewriteRule ^vendor/ - [F,L] + +# 3. Autoriser l'accès aux fichiers/dossiers physiques (images, css, js) +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d + +# 4. RACINE : accueil par défaut +RewriteRule ^$ index.php?ctrl=project&action=home [QSA,L] + +# 5. ID NUMÉRIQUE : /ctrl/action/42 +RewriteRule ^([a-zA-Z]+)/([a-zA-Z_]+)/([0-9]+)/?$ index.php?ctrl=$1&action=$2&id=$3 [QSA,L] + +# 6. PSEUDO : /user/profile/johndoe +RewriteRule ^([a-zA-Z]+)/([a-zA-Z_]+)/([a-zA-Z0-9_-]+)/?$ index.php?ctrl=$1&action=$2&pseudo=$3 [QSA,L] + +# 7. RÉÉCRITURE GÉNÉRALE (inclut tes erreurs) : /ctrl/action +# C'est cette règle qui va transformer "/error/error_404" +# en "index.php?ctrl=error&action=error_404" +RewriteRule ^([a-zA-Z]+)/([a-zA-Z_]+)/?$ index.php?ctrl=$1&action=$2 [QSA,L] \ No newline at end of file diff --git a/controllers/ErrorCtrl.php b/controllers/ErrorCtrl.php index 2e69e9e..25f3447 100644 --- a/controllers/ErrorCtrl.php +++ b/controllers/ErrorCtrl.php @@ -11,6 +11,7 @@ * Page erreur 404 */ public function error_404(){ + http_response_code(404); $this->_display("error_404"); } @@ -18,6 +19,7 @@ * Page erreur 403 */ public function error_403(){ + http_response_code(403); $this->_display("error_403"); }