Webmaster Hub: Redirection 301 Moved Permanently + htaccess ? - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Redirection 301 Moved Permanently + htaccess ? Noter : -----

#1 L'utilisateur est hors-ligne   sdalmas 

  • Groupe : Actif
  • Messages : 10
  • Inscrit(e) : 12-mai 05
  • Genre:Homme

Posté 21 octobre 2011 - 09:00

Bonjour,
J'ai un site d'une seule page portail qui presente 4 ecoles avec leur propre lien, apres les 4 ecoles ont leur propre site geré soit par moi soit par d'autres personnes.
Cette page unique actuellement est située a l'adresse www.titi.com/index.php, depuis 2 - 3 ans et est bien référencée.

aujourdh'ui j'ai du faire la version anglaise (UK) et italienne (IT) de cette page avec détection du pays par l'IP et redirection donc vers la version correspondante.
c'est a dire que maintenant
index.php contient le script de detection IP et redirection vers la version
si FR, on va sur index_fr.htm, si UK sur index_uk.htm etc....
Concernant le referencement pour faire bien comme il faut (!!), j'ai fait dans le script index.php un :
header("HTTP/1.1 301 Moved Permanently");
Voici le code du script PHP simplifié car il fonctionne
<?php
$connexion = mysqli_connect("localhost", "root", "", "my_db");

// Fonction permettant de convertir l'adresse IP en un format numérique
function conversionIP($dotted){
 $dotted = preg_split( "/[.]+/", $dotted);
 $ip = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($
dotted[3]);
 // IP Number = A x (256*256*256) + B x (256*256) + C x 256 + D
 return $ip;
}

$ip = $_SERVER['REMOTE_ADDR']; // Adresse IP du visiteur
$ip = conversionIP($ip); // Utilisation de la fonction pour convertir l'adresse IP

// Sélection des données dans la base de données. Si l'IP est comprise entre IP_FROM et IP_TO
$result = mysqli_query($connexion, "SELECT * FROM ip_to_country WHERE $ip BETWEEN IP_FROM AND IP_TO ") or die (mysqli_error($connexion));
$data = mysqli_fetch_array($result);
$country_code=$data['COUNTRY_CODE'];
if($country_code == 'FR')
{
        header("HTTP/1.1 301 Moved Permanently");
        header('Location: index_fr.htm');
}
else if($country_code == 'IT')
{
        header("HTTP/1.1 301 Moved Permanently");
        header('Location: index_it.htm');
}
else
{
        header("HTTP/1.1 301 Moved Permanently");
        header('Location: index_uk.htm');
}

mysqli_close($connexion);
?>



Est ce que cela suffit pour la redirection, ou dois- egalement faire un .htaccess contenant :

contenant quelque chose comme :
RewriteEngine On
RewriteRule .* http://www.titi.com/

il me semble que non puisque finalement c'est toujours a la page index.php qu'on doit acceder.
la difference est qu'elle ne contient plus les memes choses, elle contient le code qui redirige sur soit index_fr.htm soit ....

Merci de votre reponse
Sand
0

#2 L'utilisateur est hors-ligne   Aenoa 

  • Groupe : Membre+
  • Messages : 285
  • Inscrit(e) : 28-octobre 10
  • Genre:Homme
  • Localisation:Tournai
  • Société:Je cherche...

Posté 21 octobre 2011 - 15:17

pour que l'adresse reste en "titi.com/" il faudra faire du rewriting :)
Sinon, pour ton "if" de pays, un "Switch" serait plus adapté.

http://php.net/manua...ures.switch.php

Cordialement,
Mon (très petit) site personnel

"Ce n'est pas parce que l'on ne sait pas, que l'on ne peut pas. L'on peut tout apprendre, avec de la motivation."
0

#3 L'utilisateur est hors-ligne   Ernestine 

  • Groupe : Fondatrice
  • Messages : 1 034
  • Inscrit(e) : 21-août 03
  • Genre:Femme

Posté 21 octobre 2011 - 21:25

Ce que tu fais n'est pas du tout logique : tu fais trois redirections permanentes à partir d'une unique page !

La meilleure méthode pour ton référencement, c'est de ne pas créer de page index_fr.html, mais uniquement les deux autres, c'est à dire :
- conserver index.php pour la version française (donc pas question de créer un index_fr.html)
- créer index_en.html pour la version anglaise
- créer index_it.html pour la version italienne

Et là il n'y a aucune redirection à faire : tu as juste à placer des liens vers chacune des versions sur les pages d'accueil. Ainsi, Google continuera d'indexer la page française comme il l'a toujours fait (index.php), et indexera les deux autres versions lors de ses prochaines visites.

Par ailleurs, pour rediriger vers la bonne langue, tu ferais mieux de faire ça par détection de la langue du navigateur, plutôt que par l'adresse ip. Mais le mieux est de ne pas faire de détection automatique, et laisser les visiteurs choisir. C'est aussi préférable pour le référencement.
0

#4 L'utilisateur est hors-ligne   Dudu 

  • Groupe : Admin
  • Messages : 3 823
  • Inscrit(e) : 09-avril 05

Posté 28 octobre 2011 - 02:12

Voir le messageErnestine, le 21 octobre 2011 - 21:25, dit :

Par ailleurs, pour rediriger vers la bonne langue, tu ferais mieux de faire ça par détection de la langue du navigateur, plutôt que par l'adresse ip.


Non, pas forcément.

De tout temps, j'ai laissé mon OS (pas celui dans la gueule de ton avatar) en anglais, pour des raisons que j'ai déjà trop répétées sur ces forums. Mon navigateur, logiquement, suit par défaut la langue de l'OS. Pourtant je suis français, de langue française, et (beaucoup trop) attaché à mon orthographe et ma grammaire françaises.

On peut citer moult exemples de français travaillant dans des entreprises où les postes de travail (donc les navigateurs aussi) sont en anglais, ou encore des expatriés, ou l'inverse (travailleurs expat' bossant en France sur des postes de travail français)... etc...
Non, vraiment, la langue du navigateur, ça ne veut rien dire !


Voir le messageErnestine, le 21 octobre 2011 - 21:25, dit :

Mais le mieux est de ne pas faire de détection automatique, et laisser les visiteurs choisir. C'est aussi préférable pour le référencement.


Là en revanche, je suis d'accord :)
0

#5 L'utilisateur est hors-ligne   sdalmas 

  • Groupe : Actif
  • Messages : 10
  • Inscrit(e) : 12-mai 05
  • Genre:Homme

Posté 28 octobre 2011 - 22:07

Merci a vous tous de vos reponses (j'avais pas acces a une connexion dernierement), et effectivement j'avais fini par un peu reflechir (!!) et donc oui, pas besoin de redirection :
j'ai gardé mon index.php, crée un index_uk.htm, index_it.htm et c'est tout ...et oui j'ai fait ma boucle conditionnelle avec un switch :
par contre je fais une redirection en fonction du pays, car c'est le client qui veut que ce soit comme ca...apres les internautes ont toujours la possibilité de basculer sur une autre version en cliquant sur les petits flags.
merci
sandrine

pour ceux que ca interesse, voici mon code :

<?php
/*
Message de copyright obligatoire:
"This 'work' uses the IP-to-Country Database
 provided by WebHosting.Info (http://www.webhosting.info),
 available from http://ip-to-country.webhosting.info."
*/
// Connexion à la base de donnée
mysql_connect('myserver','mydb','mypass');
mysql_select_db('mydb') or die('Echec de selection de la base');

// Fonction permettant de convertir l'adresse IP en un format numérique
function ipAdressNumber($dotted){
 $dotted = preg_split( "/[.]+/", $dotted);
 $ip = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($
dotted[3]);
 // IP Number = A x (256*256*256) + B x (256*256) + C x 256 + D
 return $ip;
}

$ip = $_SERVER['REMOTE_ADDR']; // Adresse IP du visiteur

//quelques IP pour faire les tests :
//$ip = "82.252.138.206"; //FR
//$ip = "80.247.68.7"; // IT Italy
//$ip = "55.22.18.26"; //US
//$ip = "77.252.138.206"; //PL Poland
//$ip = "82.25.13.20"; //GB Grande Bretagne
//$ip = "155.252.138.206"; //US
//$ip = "182.252.138.206"; //AU Australia
//$ip = "195.252.138.206"; //DE Germany
//$ip = "202.252.138.206"; //JP
/*$ip = "209.252.173.102";*/ //US

$ip = ipAdressNumber($ip); // Utilisation de la fonction pour convertir l'adresse IP

// Sélection des données dans la base de données. Si l'IP est comprise entre IP_FROM et IP_TO
$result = mysql_query("SELECT * FROM ip_to_country WHERE $ip BETWEEN IP_FROM AND IP_TO ");
$data = mysql_fetch_array($result);
$country_code=$data['COUNTRY_CODE'];

//version francaise pour les pays dt le francais est langue officielle ou tres repandu : BELGIQUE : BE, CONGO : CG, SUISSE : CH, CANADA : CA, MAROC : MA, ALGERIA : DZ, TUNISIA : TN

switch ($country_code) {
    case ($country_code=='FR' || $country_code=='BE' || $country_code=='CH' || $country_code=='CA' || $country_code=='MA' || $country_code=='DZ' || $country_code=='TN' || $country_code=='CG' || $country_code=='JP'):
    //pas de redirection, juste on sort de la boucle
        break;
    case ($country_code=='IT'):
        header('Location: http://www.ecole-maville.com/ecole-maville-it.htm');
        break;
    default:
        header('Location: http://www.ecole-maville.com/ecole-maville-en.htm');
        break;
}

mysql_close();
?>

0

#6 L'utilisateur est hors-ligne   Anonymus 

  • Groupe : Hubmaster
  • Messages : 5 139
  • Inscrit(e) : 26-août 03
  • Genre:Homme
  • Localisation:Normandie.. (pas loin de Paris)
  • Société:L'atelier des Chefs

Posté 04 novembre 2011 - 17:12

Bonjour,

Juste pour info, il existe 2 fonctions intéressantes que tu pourrais utiliser :
http://php.net/manua...ion.ip2long.php
http://www.php.net/m...ion.long2ip.php

Pour le reste, je suis plutot d'accord avec Dudu et Ernestine :)

Voilà.
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)