Bonjour,

Je maintiens 2 sites. les deux sont identiques, l'un est en anglais, l'autre en français. Chaque page française possède son doublon anglais dans un autre dossier (un dossier /FR/ et un dossier /EN/).
L'utilisateur a la possibilité de passer d'une langue à l'autre à l'aide d'un simple lien qui pointe vers une page ne contenant que le script qui suit.
2 type d'exceptions sont gérée pour lesquels on ne va pas faire de redirection:
la premiere est lorsqu'il y a une requete en URL (un ? après le nom de la page), la seconde, celle qui me pose problème, est la gestion des pages 404 (si jamais le doublon d'une des 2 langues n'existe pas par exemple on redirige sur google.com).
Je ne suis pas un pro du code et doit avoué que ceci est un assemblage de chose glanné ci et là sur les forums mais fonctionne à merveille (a part ce 404 )
Le code:
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 
<!--
//Recupere l'URL au complet de la page precedente
var URL = document.referrer;
 
//Cherche différentes valeurs dans l'URL
var PosFR = URL.indexOf("/FR/");
var PosPI = URL.indexOf("?");
 
//REDIRECTION SI ADRESSE NON VALIDE (2 CAS)
 
//REQUETE (REDIRECTION)
 
//Si le site est en français (Si l'URL contient "/FR/")
if (PosFR != -1){
//Si l'URL contient "?" (une requête)
  if (PosPI != -1){
    alert ("Contenu non traduisible");
    URL = "http://www.google.com";
//redirige
    window.location=(URL);
  }
}
//Si le site est en anglais (Si l'URL contient "/EN/")
if (PosFR == -1){
//Si l'URL contient "?" (une requête)
  if (PosPI != -1){
    alert ("Non translatable content");
    URL = "http://www.google.com";
//redirige
    window.location=(URL);
  }
}
 
//////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////PARTIE QUI POSE PROBLÈME/////////////////////////////////////////////////////////
//404 (REDIRECTION)
 
//Lis les entêtes
function getXhr(){
  var xhr = null; 
  if(window.XMLHttpRequest){ // Firefox et autres
    xhr = new XMLHttpRequest(); 
  }else if(window.ActiveXObject){ // Internet Explorer 
    try {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }else{ // XMLHttpRequest non supporté par le navigateur 
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    xhr = false;
  } 
  return xhr;
}
 
//teste si la page existe avant ouverture 
function Rediriger(URL){
  var xhr = getXhr();
//On défini ce qu'on va faire quand on aura la réponse
  xhr.onreadystatechange = function(){
// Si le serveur a repondu et que la page n'existe pas 
    if(xhr.readyState == 4 && xhr.status == 404){
      window.location.href='http://www.google.com';
    }else{
      window.location.href = URL;
    }
  }
  xhr.open("GET",URL,true);
  xhr.send(null);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
//TRADUCTION
 
//Si l'URL contient "/FR/"
if (PosFR != -1){
//remplace "/FR/" par "/EN/" (case insensitive)
  URL=URL.replace( new RegExp( "/FR/", "i" ), "/EN/" );
//redirige
  window.location=(URL);
}else{
//sinon remplace "/EN/" par "/FR/" (case insensitive)
  URL=URL.replace( new RegExp( "/EN/", "i" ), "/FR/" );
//redirige
  window.location=(URL); 
}
 
-->
Je ne sais pas ou appelé la fonction Rediriger() ou mieux: pouvoir la supprimer et l'intégrer comme une verification supplémentaire avant de passer d'une page a l'autre.
Merci de votre aide