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 - 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 à 13:49
Je viens de tester ça et chez moi ça fonctionne.

<?php
    $SiteFr = "http://www.monsite.fr";
    $SiteEn = "http://www.monsite.com";

    $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."
"; 
        if ($PosFr !== false)
        {
            header("Location:http://www.monsite.fr/fr/";
            exit;
        }
        elseif($PosEn !== false)
        {
            header("Location:http://www.monsite.com/en/";
            exit;
        }        
    }
?>
3
Utilisateur anonyme
7 janv. 2010 à 15:50
0
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 à 16:17
Merci TheGorgo,

J'avais effectivement lu ce post, mais je ne sais pas m'en servir...

Je vais réessayer...

Elisa
0
Utilisateur anonyme
7 janv. 2010 à 17:01
Je pense que tu peux utiliser ça :

<?php
$Langue = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$Langue = strtolower(substr(chop($Langue[0]), 0, 2));
if($Langue == 'fr')
{
header("Location:http://www.monsite.fr");
exit;
}
else
{
header("Location:http://www.monsite.com");
exit;
}
?>
0

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

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 janv. 2010 à 18:28
Salut,

C'est à mon avis un peu juste.
D'une part il faut contrôler la variable $_SERVER['HTTP_ACCEPT_LANGUAGE'] qui peut ne pas exister.
De l'autre il faudrait tenir compte de l'ensemble des langues et de leurs préférences.
Là par exemple, si la langue préférée est le javanais et la seconde le français on enverra une page en anglais, ... ce qui n'est pas top.


Cordialement,


Kohntark -
0
Utilisateur anonyme
7 janv. 2010 à 19:08
Oui et de plus il faut aussi regarder si on est pas déja sur le bon site. Sinon tu risque de rediriger en boucle.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 janv. 2010 à 19:47
Faut surtout dire que ce test ne devrait être exécuté qu'une seule fois à l'arrivée du visiteur, ensuite on met en session la langue, et on ne revient plus dessus.

J'ajouterai que le traitement via PHP n'est sans doute pas la meilleure solution, sauf à passer par des templates. Tel quel je préfère de loin la solution htaccess.


Cordialement,


Kohntark -
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 à 09:47
Bonjour et merci à tous pour vos contributions !

Malheureusement, je dois dire que je ne m'en sors pas du tout...

Je n'arrive toujours pas à faire en sorte que www.monsite.fr renvoie vers un index et www.monsite.com vers un autre index...

Si vous pouvez m'aider, je vous en serait très reconnaissante !

Merci d'avance.
Elisa

Je vois que l'arborescence fichiers n'apparait plus :

Hébergeur > Fichiers du site en anglais > indexEN.html
> Fichiers du site en français > indexFR.html
0
Utilisateur anonyme
8 janv. 2010 à 10:19
Ah ok en fait j'avais pas du tout compris ça.

alors comme le dit Kohntark plus haut, la solution la plus simple et la plus efficace n'est pas d'utiliser php.
As tu entendu parler des fichiers htaccess ?

Grâce à un fichier htaccess tu peux rediriger n'importe quelle page là où tu veux.
Regardes du côté de l'URL REWRITING.
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 à 10:42
Merci TheGorgo !

Je suis allée voir URL REWRITING comme tu me le conseillais. Si je comprends ce que je lis (rien n'est moins sur...) on utilise ça surtout pour le référencement ? Est-ce que j'ai bien compris ?

Par contre, je crois que je ne suis pas claire dans ma demande...
Ce que je voudrais, c'est que si un internaute écrit www.monsite.fr il soit dirigé vers le fichier index.html du site en français (hebergeur/Fichiers du site français / index.html) et si il écrit www.monsite.com, il soit dirigé vers index.html du site en anglais. (hebergeur/Fichiers du site anglais / index.html)
Sachant que les deux sites sont hébergés au même endroit...

Est-ce qu'au moins c'est possible ?!

Merci d'avance

Elisa
0
Utilisateur anonyme
8 janv. 2010 à 10:54
Oui c'est tout à fait possible.

Pour l'url rewriting on l'utilise beaucoup pour le référencement mais pas uniquement. Ca peut par exemple servir à cacher les variables d'url pour éviter les failles xss. Ou simplement pour des questions de maintenance.

Où héberges tu ton site ?
0
Utilisateur anonyme
8 janv. 2010 à 11:04
Une solution plus simple consisterait à avoir ce type d'arborescence.

en/
fr/
index.php

à la racine de ton site.

Dans ton ficher index.php tu aurais un code php de ce style

<?php
    $SiteFr = "http://www.monsite.fr";
    $SiteEn = "http://www.monsite.com";

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


Je pense que ça doit marcher.
0
Utilisateur anonyme
8 janv. 2010 à 11:06
oups j'ai oublié les parenthèses de fin des fonctions header()
Quel boulet !
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 à 11:26
Merci beaucoup beaucoup !!

Je vais essayer ça tout de suite et je te tiens au courant !

Elisa
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 à 11:38
Re !

Je suis désolée, ça ne fonctionne pas... J'obtiens une page blanche et le navigateur reste sur http://www.monsite.fr (ou .com)

Mais tu as parfaitement compris ce que je veux faire !

Merci
0
Utilisateur anonyme
8 janv. 2010 à 11:51
<?php
    $SiteFr = "http://www.monsite.fr";
    $SiteEn = "http://www.monsite.com";

    $Referer = $_SERVER['HTTP_REFERER'];
    echo $Referer."
";

    if($Referer != null && !empty($Referer))
    {
        
        $PosFr = strpos($Referer, $SiteFr);
        echo $PosFr."
";
        $PosEn = strpos($Referer, $SiteEn);
        echo $PosEn."
"; 
        if ($PosFr !== false)
        {
            //header("Location:http://www.monsite.fr/fr/";
            //exit;
        }
        elseif($PosEn !== false)
        {
            //header("Location:http://www.monsite.com/en/";
            //exit;
        }        
    }
?>


Essayes ça stp et copie moi ce qui s'affiche à l'écran. Merci
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 à 13:23
Excuses moi, j'étais partie déjeuner...

Je viens d'essayer, mais c'est pareil, j'ai une page blanche...
0
Utilisateur anonyme
8 janv. 2010 à 13:28
Essaye de remplacer $_SERVER['HTTP_REFERER'] par $_SERVER['REQUEST_URI']
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 à 13:31
$_SERVER['REQUEST_URI']

C'est pas URL ?
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 à 13:38
J'ai une page blanche aussi !
0
Rejoignez-nous