réponses
651 vues
Problème de redirection avec le fichier .htaccess
Bonjour à tous,
Je rencontre un problème lors du déploiement d'une application Laravel sur un hébergeur cPanel fourni par CCNTECHNOLOGIES.
Le problème se situe au niveau du fichier .htaccess qui se trouve à la racine du projet. Ce fichier est censé rediriger toutes les requêtes entrantes vers le dossier public. Cependant, lorsque l'URL inclut le mot public, le navigateur affiche l'erreur suivante :

1ERR_TOO_MANY_REDIRECTS1ERR_TOO_MANY_REDIRECTS
Voici le contenu du fichier .htaccess à la racine du projet :
1<IfModule mod_rewrite.c>2 RewriteEngine On34 # Redirect everything to the /public directory5 RewriteRule ^$ public/ [L]6 RewriteRule (.*) public/$1 [L]7</IfModule>1<IfModule mod_rewrite.c>2 RewriteEngine On34 # Redirect everything to the /public directory5 RewriteRule ^$ public/ [L]6 RewriteRule (.*) public/$1 [L]7</IfModule>
Et voici le contenu du fichier .htaccess situé dans le dossier public :
1<IfModule mod_rewrite.c>2 <IfModule mod_negotiation.c>3 Options -MultiViews -Indexes4 </IfModule>56 RewriteEngine On78 # Handle Authorization Header9 RewriteCond %{HTTP:Authorization} .10 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]1112 # Redirect Trailing Slashes If Not A Folder...13 RewriteCond %{REQUEST_FILENAME} !-d14 RewriteCond %{REQUEST_URI} (.+)/$15 RewriteRule ^ %1 [L,R=301]1617 # Send Requests To Front Controller...18 RewriteCond %{REQUEST_FILENAME} !-d19 RewriteCond %{REQUEST_FILENAME} !-f20 RewriteRule ^ index.php [L]21</IfModule>1<IfModule mod_rewrite.c>2 <IfModule mod_negotiation.c>3 Options -MultiViews -Indexes4 </IfModule>56 RewriteEngine On78 # Handle Authorization Header9 RewriteCond %{HTTP:Authorization} .10 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]1112 # Redirect Trailing Slashes If Not A Folder...13 RewriteCond %{REQUEST_FILENAME} !-d14 RewriteCond %{REQUEST_URI} (.+)/$15 RewriteRule ^ %1 [L,R=301]1617 # Send Requests To Front Controller...18 RewriteCond %{REQUEST_FILENAME} !-d19 RewriteCond %{REQUEST_FILENAME} !-f20 RewriteRule ^ index.php [L]21</IfModule>
Ce que j’ai essayé :
- J’ai vérifié que le module mod_rewrite est activé.
- J’ai tenté d'ajuster les règles de redirection dans le fichier .htaccess à la racine.
Mon objectif : Faire en sorte que toutes les requêtes soient redirigées correctement vers le dossier public et éviter l'erreur ERR_TOO_MANY_REDIRECTS.
Auriez-vous une solution ou une idée pour résoudre ce problème ? Merci d’avance pour votre aide !
Les configurations que tu definis dans ton .htaccess à la racine redirige toutes les requêtes vers le dossier public et le serveur essaie de les rediriger encore et encore, cela crée une boucle infinie. Ce qui est la cause de ton erreur
1ERR_TOO_MANY_REDIRECTS1ERR_TOO_MANY_REDIRECTS
La ligne problematique dans ce fichier est
1RewriteRule (.*) public/$1 [L]1RewriteRule (.*) public/$1 [L]
Car cette règle redirige toutes les requêtes (y compris celles qui contiennent déjà /public/) vers le dossier public, ce qui crée une boucle infinie.
Essaye de modifier ton fichier .htaccess à la racine ainsi voir
1<IfModule mod_rewrite.c>2 RewriteEngine On34 # Ne redirige pas si l'URL contient déjà /public5 RewriteRule ^public/ - [L]67 # Redirige les autres requêtes vers le dossier public8 RewriteCond %{REQUEST_URI} !^/public/9 RewriteRule ^(.*)$ /nom_du_projet/public/$1 [L]10</IfModule>1<IfModule mod_rewrite.c>2 RewriteEngine On34 # Ne redirige pas si l'URL contient déjà /public5 RewriteRule ^public/ - [L]67 # Redirige les autres requêtes vers le dossier public8 RewriteCond %{REQUEST_URI} !^/public/9 RewriteRule ^(.*)$ /nom_du_projet/public/$1 [L]10</IfModule>
Apres ces modifications tu vides le cache
1php artisan optimize:clear1php artisan optimize:clear
Il faut Se connecter ou Créer un compte pour participer à cette conversation.