lesage
lesage 415 XP
a posé

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 :

Capture d'écran 2024-12-05 122758.png

ERR_TOO_MANY_REDIRECTS

Voici le contenu du fichier .htaccess à la racine du projet :

<IfModule mod_rewrite.c>
RewriteEngine On
 
# Redirect everything to the /public directory
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>

Et voici le contenu du fichier .htaccess situé dans le dossier public :

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
 
RewriteEngine On
 
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
 
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
 
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</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 !

russeloken
a répondu
Meilleure réponse

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

ERR_TOO_MANY_REDIRECTS

La ligne problematique dans ce fichier est

RewriteRule (.*) 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

<IfModule mod_rewrite.c>
RewriteEngine On
 
# Ne redirige pas si l'URL contient déjà /public
RewriteRule ^public/ - [L]
 
# Redirige les autres requêtes vers le dossier public
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /nom_du_projet/public/$1 [L]
</IfModule>

Apres ces modifications tu vides le cache

php artisan optimize:clear

Il faut Se connecter ou Créer un compte pour participer à cette conversation.