Redirection depuis index.php

Résolu
cs_Elisa23 Messages postés 32 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 1 février 2010 - 7 janv. 2010 à 15:36
cs_jacques-antoine Messages postés 79 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 22 mai 2017 - 1 juin 2011 à 18:04
Bonjour,

J'ai fait un site en Anglais et en Français. Les deux site sont hébergés au même endroit. Je vous ai fait une petite arborescence pour essayer d'être plus claire...



Je voudrais pouvoir diriger les visiteurs anglophone vers www.monsite.com et les visiteurs francophones vers www.monsite.fr

J'essaie d'utiliser $_SERVER['HTTP_ACCEPT_LANGUAGE'] mais je n'y arrive pas ! je ne sais pas rediriger vers IndexEN.html ou IndexFR.html suivant la langue du visiteur...

Pouvez-vous m'aider ?

Voici le code que j'essaie de mettre en oeuvre (index.php) :
<?php

$language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$language = $language{0}.$language{1};

if ($language = fr)
then 
else

?>



Un grand merci par avance pour votre aide !

Elisa

30 réponses

Utilisateur anonyme
8 janv. 2010 à 14:21
Ca marche ?

Oublie pas de rajouter les parenthèses fermantes à la fin des header() je les ai encore oubliées
0
cs_Elisa23 Messages postés 32 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 1 février 2010
8 janv. 2010 à 14:31
OK ! Ben, je ne sais pas ce que je fais mal, mais j'ai toujours ma page blanche...

Je commence à déprimer ! :-)

Un grand merci en tout cas !
0
Utilisateur anonyme
8 janv. 2010 à 14:35
T'as configuré php.ini pour afficher les erreurs ?
0
cs_Elisa23 Messages postés 32 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 1 février 2010
8 janv. 2010 à 14:53
YEEEEEEEEEEEEEEESSSSSSSSSSS !!!!

Champion du monde !!!!!!

Ça marche !!!

MERCI ! MERCI ! MERCI !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Elisa23 Messages postés 32 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 1 février 2010
8 janv. 2010 à 16:45
Par contre, une dernière question :-p

Si on veut ajouter www.monsite.org qui pointe aussi vers le site anglais, on fait comment ?

Merci !

Elisa
0
Utilisateur anonyme
8 janv. 2010 à 17:00
http://www.monsite.fr\";

$SiteEn = \"http://www.monsite.com\";
$SiteOrg = \"http://www.monsite.org\";
$Referer = \"http://\".$_SERVER[\"SERVER_NAME\"'>.$_SERVER["REQUEST_URI"]; //echo $Referer." "; if($Referer != null && !empty($Referer)) { $PosFr = strpos($Referer, $SiteFr); //echo $PosFr." "; $PosEn = strpos($Referer, $SiteEn); //echo $PosEn." "; $PosOrg = strpos($Referer, $SiteOrg); if ($PosFr !== false) { header("Location:http://www.monsite.fr/fr/"); exit; } elseif($PosEn !== false || $PosOrg !== false) { header("Location:http://www.monsite.com/en/"); exit; } } ?>]


Comme ça je pense
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
8 janv. 2010 à 19:53
Comme TheGorgo je n'avais pas compris initialement.

Tout cela me parait fort complexe et à dire vrai il y a un truc qui m'échappe :
pourquoi ne pas simplement redirigé au niveau de hébergeur ??
faire pointer le domaine "http://www.monsite.com" vers hébergement\en\
faire pointer le domaine "http://www.monsite.fr" vers hébergement\fr\

Bon, ça dépends de l'hébergeur et du type d'hébergement que tu as souscris mais rien ne t'empêche de te renseigner sur cette possibilité, ça serait tout de même bien plus simple.

J'en profites pour reposer la question de TheGorgo pour laquelle je n'ai vu aucune réponse :
Où héberges tu ton site ?


L'autre solution "propre" passe par les htaccess et l'urlrewriting.

La solution PHP n'est à mon avis pas la meilleure, car plus lourde :
- elle ajoute inutilement du code
- il n'y a pas d'autre choix que passer par un header, ce qui signifie :
le client envoie un GET de l'url ==> PHP renvoie une redirection ==> le client suit la redirection ==> le serveur renvoie la page demandée
Même si c'est loin d'être la mort ça fait toujours un échange client <=> serveur qu'un htaccess ne ferait pas (puisque le serveur web livrerait directement la page sans demander au navigateur d'en appeler une autre)
- ...

A propos de ton code TheGorgo :
Hormis quelques bricoles qui ont tout de même leurs intérêts et le "if($Referer != null && !empty($Referer))" qui je pense ne sert à rien, j'y vois quelques inconvénients plus problématiques :
- que se passe t il lorsque le site demandé est http://monsite.fr ou http://monsite.com ?
- que ce passe t il si un utilisateur appelle directement http://monsite.fr/dossier/index.php ?


Cordialement,


Kohntark -
0
Utilisateur anonyme
8 janv. 2010 à 20:34
L'inconvénient de l'URL rewriting c'est que si ton hébérgeur (free par exemple) ne l'a pas activé tu peux pas l'utiliser.

Pour ce dont tu parles à la fin, j'y avais pas pensé mais c'est une simple petite modif au lieu de chercher http://www.monsite.fr
on cherche juste monsite.fr
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
8 janv. 2010 à 21:21
L'inconvénient de l'URL rewriting c'est que si ton hébérgeur (free par exemple) ne l'a pas activé tu peux pas l'utiliser.

Tout à fait. Même si je ne l'ai pas explicitement précisé, les trois solutions que j'énonçais vont de la plus "propre" / peu compatible à la "plus sale" / plus compatible.

Je pense que la réponse viendra de la question que tu avais très justement posée et que j'ai repris.

mais c'est une simple petite modif au lieu de chercher http://www.monsite.fr
on cherche juste monsite.fr

Je suis bien d'accord, il me semblait juste nécessaire de le préciser car si Elisa23 recopie ce code elle va se heurter à des problèmes.
Le second point est également essentiel (http://monsite.fr/dossier/index.php)


Kohntark -
0
cs_jacques-antoine Messages postés 79 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 22 mai 2017
1 juin 2011 à 18:04
Salut Elisa23

j'avais un problème similaire : mon fichier index.php devait soit se dérouler normalement soit, s'il s'agissait d'une utilisation via Internet Explorer, pointer illico vers une autre page d'un autre site. Il a été résolu (merci Thegorgo!) comme indiqué, à savoir :

// test du navigateur
if(strstr($_SERVER["HTTP_USER_AGENT"], "MSIE"))
{
header("Location:http://site-externe/index.htm");
exit;
}

... et roule, Raoul! Ça marche impeccable. Je pense que c'est transposable, quel que soit le cas de figure : seuls les tests sont concernés. La contrainte est que ce code doit être en tête, au moins dans mon cas.

jacques-antoine
0
Rejoignez-nous