recherche

Maison  >  Questions et réponses  >  le corps du texte

Le dossier public Laravel renvoie une erreur 404 (.htaccess)

<p>J'ai un fichier .htaccess. Grâce à ce fichier, je peux détecter la langue par sous-domaine. Il n'y a aucun problème à cet égard. Cependant, lorsque je redirige la requête entrante vers un fichier du dossier public, j'obtiens une erreur 404 et la langue ne fonctionne pas correctement. </p> <pre class="brush:php;toolbar:false;">SetEnv DEFAULT_LANG fr <IfModule mod_rewrite.c> Options + FollowSymLinks - Index Réécriture du moteur activé RewriteCond %{HTTP:Autorisation} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Autorisation}] RewriteCond %{HTTP_HOST} ^([a-z]{2}).([a-z0-9-]+.[a-z]+)$ [NC] RéécrireRule (.*) - [QSA,E=LANGUE :%1] RéécritureCond %{ENV:LANGUAGE} ^$ RewriteRule (.*) - [QSA,E=LANGUAGE:en] RéécritureCond %{QUERY_STRING} !langue= RewriteRule ^(.*)$ $1?langue=%{ENV:LANGUAGE} [QSA] RéécritureCond %{REQUEST_URI} !^/public RéécrireRule ^(.*)$ /public/$1 [L] </IfModule></pre> <p><br /></p>
P粉238433862P粉238433862528 Il y a quelques jours519

répondre à tous(1)je répondrai

  • P粉604669414

    P粉6046694142023-07-29 13:29:04

    Essayez d'utiliser ce qui suit :

    SetEnv DEFAULT_LANG en
    
    <IfModule mod_rewrite.c>
        Options +FollowSymLinks -Indexes
    
        RewriteEngine On
    
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        RewriteCond %{HTTP_HOST} ^([a-z]{2})\.([a-z0-9-]+\.[a-z]+)$ [NC]
        RewriteRule .* - [QSA,E=LANGUAGE:%1]
    
        RewriteCond %{ENV:LANGUAGE} ^$
        RewriteRule .* - [QSA,E=LANGUAGE:en]
    
        RewriteCond %{QUERY_STRING} !language=
        RewriteRule ^(.*)$ ?language=%{ENV:LANGUAGE} [QSA]
    
        RewriteCond %{REQUEST_URI} !^/public
        RewriteRule ^(.*)$ /public/?language=%{ENV:LANGUAGE} [L,QSA]
    
    </IfModule>

    En utilisant ce qui précède, la détection de langue devrait fonctionner correctement même lors de la redirection vers des fichiers sous le dossier public. La variable %{ENV:LANGUAGE} restera inchangée tout au long de la réécriture, les paramètres de langue corrects doivent donc être transmis au fichier dans le dossier public.

    répondre
    0
  • Annulerrépondre