Salut,

J'ai mis en place une version française de mon site + une redirection qui n'a pas l'air de fonctionner, voici le code du .htaccess :

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ /fr/ [L,R=301]
Sans répondre directement à ta question je vais te donner une autre direction.

Voilà la seule et unique règle de réécriture que j'utilise dans tous mes projets :


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]


Je l'ai pas inventé, cette règle est utilisée par tous les frameworks et CMS modernes. Pourquoi elle est intéressante ? Tout simplement parce qu'elle est générique au possible. Tout le travaille de redirection se fait dans ton code PHP (idéalement dans un objet Router).

L'intérêt est qu'elle rend ton projet moins dépendant du type de serveur sur lequel ton site fonctionne. Tu pourra facilement passer de Apache à IIS ou à lightHttpd (de plus en plus populaire).

La gestion de tes URL sera également plus souple. Tu pourra, par exemple, facilement passer d'un format http://fr.monsite.com/ à http://monsite.com/fr/ ou à http://monsite.fr/ et vice-versa.

En conclusion je t'invite à abandonner ton idée. Smiley smile
Salut,

Je n'ai pas creusé le sujet. Tout ce que j'ai pu trouver la-dessus ce sont des hacks en php. Je n'avais pas envie d'intégrer ce genre de bricolage. (Bon je pense que toi tu me diras que je bricole déjà en utilisant WordPress Smiley biggrin )

Je vais me pencher sur la question. Ce qui est drôle est que finalement toutes les questions renvoient à RTFM. Je connais les htaccess qu'en surface.

Merci à toi.
Salut,

Je uppe pour une petite question :
Je fais un switch ou juste un if else et j'inclue mon routeur comment?

J'aimerais faire un code idéalement pour que chaque page renvoie vers sa jumelle dans l'autre langue.
Modifié par jmlapam (13 Jul 2012 - 01:17)
Ah je cherchais juste une direction mais j'ai des bras et voici le code :

if (!isset($userLang){
$userLang = //la fonction que je recherche;
switch($userLang) {	
	case"fr":
	header ("Location: url bl abla");
	break;
		
	case "en":
	header ("Location: url blabla");
	break;

	case "de":
	header ("Location: url blabla");
	break;
		
		
	default:
	header ("Location: url blabla");
	break;
	}
}


Modifié par jmlapam (13 Jul 2012 - 20:51)
Personne?

Bon cela marche avec ceci :
$userLang = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$userLang = strtolower(substr(chop($Langue[0]),0,2));


EDIT: pas de .htaccess, je passe donc par le PHP.
Modifié par jmlapam (14 Jul 2012 - 19:01)