Bonjour,
J'ai un site avec version fr & en géré par cookie. Le changement de langue fonctionne bien lorsque l'on effectue celui-ci à partir des adresses comme /index.html, /categorie.html. En utilisant l'url rewriting, avec des adresses créant un dossier virtuel comme /categorie/categorie.html, le changement de langue n'est pas pris en compte. En cliquant sur le bouton english pour changer de langue, il va indiquer l'adresse suivante, sans fonctionner : "/category/2-electronics.html?lang=en"
Cela ne fonctionne pas, uniquement lorsqu'il y a un dossier virtuel apparemment..
Voici mon fichier lang.php :
et mon .htaccess :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php $lang = $_GET['lang']; $myLang = $_COOKIE["myLang"]; if (!isset($_COOKIE["myLang"])){ setcookie("myLang", "en", $expire,"/"); $_COOKIE['myLang'] = 'en'; include "lang/en.php"; $myLang = "en"; }else{ include "lang/$myLang.php"; } $expire = time()+60*60*24*30*12; $languages = array('en' => 'en', 'fr' => 'fr'); if (array_key_exists($lang, $languages)) { include "lang/{$lang}.php"; setcookie("myLang", "$lang", $expire); $myLang = $lang; header('Location: '.$_SERVER['REDIRECT_URL']); } ?>
Que dois-je spécifier pour que les dossiers virtuels soient pris en compte ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 RewriteEngine on RewriteRule ^([a-zA-Z0-9\-]*)\.html$ /$1.php [L] RewriteRule manual/([0-9]+)-([a-zA-Z0-9\-]+) manual.php?id=$1&url=$2 RewriteRule category/([0-9]+)-([a-zA-Z0-9\-]+) category.php?id=$1&url=$2 RewriteRule brand/([0-9]+)-([a-zA-Z0-9\-]+) brand.php?id=$1&url=$2 ErrorDocument 404 /404.php
Merci pour votre aide !
Partager