Hello !

Je met en place un site multi-langue, et j'ai choisis la redirection via de faux sous dossiers "xxx.tld/fr/page" ou "xxx.tld/en/page"ou "xxx.tld/es/page.

J'ai donc mis en place une redirection via le htaccess, jusqu'ici pas de soucis.

Voici un extrait du htaccess :

# empty url -> redirect to en/
RewriteCond %{QUERY_STRING} !lang=(fr|en|es)
RewriteRule ^$ fr/ [R=301,L]
# url is ONLY '/en' or '/de' -> redirect to /en/ or /de/ (adding slash)
RewriteRule ^(fr|en|es)$  $1/ [R=301,L]
# now all urls have en/ de/ -> parse them
RewriteRule ^(fr|en|es)/(.*)$  $2?lang=$1&%{query_STRING} [L]

Mais petit soucis ... La variable $_GET['lang'] n'est pas accessible sur une page dont l'URL est ré-écrite

J'ai de grosses lacunes sur la rédaction des règles htaccess, j'ai probablement trouvé la cause de ce soucis :

RewriteRule ^([a-zA-Z-]+)$   /serveur.php?serv=$1 [L]

Sur les pages ré-écrites comme via la règle ci-dessus, la premiere règle est annulée, et la variable $_GET['lang'] n'existe pas ...

Merci d'avance pour votre aide, et je reste à disposition s'il faut plus de code et/ou d'explication !

EDIT : Au cas ou celà est nécéssaire, voici le .htaccess complet :

RewriteEngine On
RewriteBase /  
#Options -Multiviews
#-------------- Redirection sans www vers www------
RewriteCond %{HTTP_HOST} ^www.site.com$
RewriteRule ^(.*) https://site.com/$1 [QSA,L,R=301]
#--------------------------------------------------
# Desactive le listing des fichiers dans les dossiers
Options -Indexes
#--------------------------------------------------
#Redirection http vers https
#RewriteCond %{SERVER_PORT} 80
#RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
#-------------------------------------------------------
# empty url -> redirect to en/
RewriteCond %{QUERY_STRING} !lang=(fr|en|es)
RewriteRule ^$ fr/ [R=301,L]
# url is ONLY '/en' or '/de' -> redirect to /en/ or /de/ (adding slash)
RewriteRule ^(fr|en|es)$  $1/ [R=301,L]
# now all urls have en/ de/ -> parse them
RewriteRule ^(fr|en|es)/(.*)$  $2?lang=$1&%{query_STRING} [L]
#--------------------------------------------------
# Règles de réécriture d'URL :
#RewriteRule ^sitemap.xml$   /sitemap.php [L]
#RewriteRule ^vote$   /vote.php [L]
#RewriteRule ^total$   /total.php [L]
#RewriteRule ^classement$   /classement.php [L]
#RewriteRule ^widget$   /widget.php [L]
#RewriteRule ^evolution$   /evolution.php [L]
#RewriteRule ^a-propos$   /a-propos.php [L]
#RewriteRule ^migrations$   /migrations.php [L]
RewriteRule ^([a-zA-Z-]+)$   /serveur.php?serv=$1 [L]
#-------------------------------------------------------
#ErrorDocument 404 /index.php
#-------------------------------------------------------

Aucune réponse