Problème de redirection avec le fichier .htaccess

lesage @lesage 255 XP a posé dans
Résolu

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 !

  • Réponse acceptée

    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

Veuillez vous connecter ou créer un compte pour participer à cette conversation.