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
#-------------------------------------------------------