Référencement site multilingue dynamique (ajax-php-mysql)

Nouveau WRInaute
Bonjour à tous,

je finis par poster pour décrire ma problématique, car après de longues recherches je n'ai toujours pas trouvé de réponse ciblée.
Pardonnez moi si je n'ai pas su chercher comme il fallait, ce n'est pas faute d'avoir essayé, d'autre part je rencontre des difficultés avec le moteur du recherche du site, il me dit qu'il ne trouve rien...

Bien je m'explique, je suis en école d'ingé (après avoir perdu mon boulot) et je me suis initié cette années aux technologies web, je connaissais déjà bien le html et le js mais j'ai découvert en plus le php, l'ajax et le SQL.
Donc on a commencé un site pour une "cliente" et je le termine seul pendant le mois de juillet.
Le site se structure de la façon suivante:

  • 1 page "porte d'entrée" qui détecte la langue du navigateur (html simple avec une chtouille de js), qui redirige après 5 secondes vers
  • 1 page "home" en html qui ne comporte que des identifiants à la place du texte (ex: [menu1_elem1], [zone_centrale]), tout le reste de la structure est écrite en dur, et la page fait appel à des fichiers .css et .js. Cette page passe dans un moteur de template
  • 1 page "template_engine" en php qui va traiter dans un premier temps la page "home" pour la remplir dans la langue voulue, en faisant les requête SQL qui s'imposent

Si on souhaite consulter un lien interne, le but est de modifier dynamiquement la zone centrale du site, comme la mise en page de la page "home" ne convient pas, on s'en va vers

  • 1 page "page_type" en html simple, conçue exactement comme la page "home" et qui passera à travers le moteur de template, la différence cette fois, c'est que l'action sur un lien interne, lancera un moteur ajax, qui appellera un fichier php effectuant d'autres requêtes SQL pour enfin donner une réponse que l'on placera dans la zone centrale de la page type

Pour résumer, c'est comme si on avait autant de pages html que de contenus centraux, sauf que ceux ci sont chargés dynamiquement dans la zone centrale.
La cliente souhaite un référencement passif des plus efficaces, et je ne sais absolument pas du tout comment faire sur une telle structure.
La dernière solution de secours à laquelle j'ai pensé, est d'écrire une page html par contenu, sans aucun menu, et un seul lien, renvoyant vers la structure du site chargée avec le contenu souhaité pour permettre à l'internaute de poursuivre sa navigation, mais bon, c'est franchement du brciolage comme solution et je suis sûr qu'il y a des moyens plus pros.

D'après ce que j'ai lu sur ce forum il y a beaucoup de gens qui s'y connaissent vraiment bien, j'ai bon espoir que l'un d'entre vous éclairera ma lanterne :D

Je n'ai actuellement pas de contenu en ligne pour vous montrer à quoi cela ressemble, je vous tiens au courant dès que cela change.
Merci d'avance.
 
WRInaute accro
Donc si je comprends bien tu as :

1/ Une page d'accueil avec aucun contenu dont le but est uniquement de rediriger en fonction d'une langue

2/ Du contenu chargé exclusivement à partir de fonctions AJAX

Bref deux points qui ne vont pas aider en terme de référencement. L'Ajax c'est bien, mais pour afficher du contenu, tu te tires un peu une balle dans le pied en terme de réf.

Donc je te conseillerais :

1/ De faire sauter ta page d'accueil et de la remplacer par un lien permettant, sur chaque page du site, de switcher entre les version française et anglaise.

2/ Pour le chargement du contenu, le mieux serait de supprimer l'affichage des données via du JS, mais j'imagine que c'est un peu tard...

Je te conseille d'utiliser des simulateurs de bot, type http://www.spider-simulator.com/fr/ pour voir comment il interprète ton site.
 
WRInaute accro
Ca dépend exactement de ce que fait ta page d'accueil, mais si elle fonctionne comme la mienne, c'est à dire détection ET redirection, ce n'est pas un problème pour le référencement.

Sinon, je plussoie, une page qui ne sert qu'à choisir une lagnue, et sur laquelle, en plus l'internaute doit cliquer, c'est pas bon.
 
Nouveau WRInaute
la page d'accueil temporise uniquement dans le but de laisser au système le temps d'écrire le cookie dans lequel on trouvera l'information de la langue, l'utilisateur n'a rien à faire si ce n'est patienter 5s. Dans certains cas, lorsque l'on effectue un traitement s'appuyant sur le contenu d'un cookie que l'on vient d'écrire, il ne peut pas le lire puisqu'il est en cours d'écriture.

Pour le chargement du contenu textuel de la zone centrale, je ne passe effectivement que pas le moteur ajax, le reste de la structure est généré par du php qui ouvre des fichiers html ou qui fait des requêtes (contenu linguistique), le contenu de la structure n'est chargé qu'a l'ouverture ou au rafraichissement de la page (template_engine.php?params) avec bien entendu un chargement de la zone centrale par ce même template_engine.php lors d'un chargement ou rechargement seulement.

D'après ce que tu me dis, il me faudrait mieux changer la page d'accueil (qui n'est autre que mon index.html) par une simple page proposant le choix des 5 langues, qui renverraient respectivement vers une sorte de table des matières ou de sitemap dans la langue voulue(attention je fais peut être un abus de language avec ce mot)?
Toujours est il que je n'aurai que des url exotiques derrière ces liens, et ça ne correspond plus du tout au cahier des charges que je suis... :?

Tu me dis qu'il serait préférable de ne pas utiliser du js pour modifier le contenu central, je veux bien, je peux toujours changer mon fusil d'épaule (si j'en ai encore le temps bien sûr) mais tu me conseillerais de m'y prendre comment dans ce cas?

La solution "bricolage" que j'ai évoqué plus haut fonctionnerait elle au pire des cas?

En tout cas merci de ton aide :)
 
Nouveau WRInaute
j'ai effectivement découvert ce qu'étais un cms après la fin de notre période de projet.
Vu les ressources dont je dispose déjà, tout reprendre de 0 m'arrache un peu la bouche :p
Il ne me manque pas grand chose pour terminer le site, si ce n'est m'assurer un bon référencement passif.
Voilà pourquoi je n'ai pas utilié un cms. D'autre part, en milieu scolaire, le but étant d'aprendre, je me voyais mal dire à mes profs que j'avais rien fait moi même... :wink:
 
WRInaute accro
Ah non l'idée serait au contraire de t'affranchir de ce genre de page d'accueil, et de donner directement accès à une page d'accueil dans une langue par défaut, en offrant a posteriori le choix à l'internaute de choisir une autre langue.

Pour les contenus, le webmaster du site doit ultérieurement pouvoir rajouter du contenu (donc des pages) ou non ?
 
Nouveau WRInaute
le webmaster n'est autre que la cliente, qui ne dispose que de connaissances rudimentaires des technologies web, je lui configure donc une interface d'administration qui lui permet de modifier le contenu de sa base afin d'éditer les contenu centraux (tinyMCE)
au départ effectivement la langue était par défaut avec possiblité de la changer, mais la structure du site est toujours inchangée et j'ignore ce qu'en penseront les robots
 
WRInaute accro
Jax a dit:
la page d'accueil temporise uniquement dans le but de laisser au système le temps d'écrire le cookie dans lequel on trouvera l'information de la langue, l'utilisateur n'a rien à faire si ce n'est patienter 5s. Dans certains cas, lorsque l'on effectue un traitement s'appuyant sur le contenu d'un cookie que l'on vient d'écrire, il ne peut pas le lire puisqu'il est en cours d'écriture.

Là je suis d'accord avec l'utilisateur au pseudo japonisant que je n'arrive pas à retenir : ça pas bon.

5 sec c'est long, dans le temps du Web, et il faudra ensuite rajouter le temps de chargement de la page.
Détecte la langue, dirige vers une page et écris le cookie ensuite :)
 
Nouveau WRInaute
Ben en fait ça parait pas si long, mais je suis d'accord avec ta proposition qui semble bien plus intelligente. Cependant on s'éloigne du vrai problème :D
Mais bon, j'ai toujours des questions épouvantables pour ce qui est des solutions :p
 
WRInaute accro
Sauf que ta redirection en js, les bots des moteurs de recherche se cognent les dents dessus. Ils sont dans certains cas a priori capable de suivre une url si elle apparaît en clair dans le code source (encore que je n'ai jamais pu le vérifier par moi-même), mais une redirection en relatif je vois mal comment.

Donc tant que tu laisses là les bots des moteurs de recherche s'arrêteront pour beaucoup à ta page d'accueil vide...

Et c'est aussi pour ca qu'utiliser Ajax pour afficher l'essentiel du contenu d'un site est à éviter (affichage géré en JS donc pas pris en compte par les bots).
 
Nouveau WRInaute
c'est bien ce qu'il me semblait, je te remercie de me le confirmer, au moins, j'en suis sûr.
Maintenant il me reste à trouver un moyen de faire comprendre aux bots ce qu'il doivent regarder.
Est ce que tu penses que la solution - si on peut appeler ça une solution - dont j'ai parlé au départ, à savoir créer une page de contenu en html simple pour chaque contenu, qui ne contient que le texte du contenu mis en page et un seul lien, qui renverrait vers la page type du site affichant le même contenu, serait viable? ou débile?

Mais bon, quand j'y repense... quand la cliente va éditer un contenu, elle va sûrement pas éditer la page qui correspond... donc c'est quand même complètement débile de ce côté là... à moins que... tu vas peut être pouvoir me répondre, je génère ces mêmes pages simple en php via les même requêtes SQL, mais sans passer par le moteur ajax bien enendu. Que ferait le bot dans ce cas là? il va lire la page?
 
WRInaute accro
Excuses moi, mais je ne comprends pas l'intérêt de sortir une page en Ajax si tu peux la sortir en php.
Rappel : pourquoi faire compliqué quand on peut faire simple ?
 
WRInaute accro
Le pseudo japonisant est du même avis que la damoiselle à l'avatar so sexy.

Si tu veux une vraie solution pérenne, qui ne risque pas de se retourner contre toi à un moment ou un autre et qui va permettre un maximum de souplesse à l'utilisateur final, laisse tomber l'Ajax pour l'affichage du contenu.
 
Nouveau WRInaute
"pourquoi faire compliqué quand on peut faire simple", je suis tellement d'accord avec ce principe...
Alors charger la page en php demande de systématiquement recharger toute la page avec sa structure qui elle, ne change pas. Voilà pourquoi on avait choisit l'ajax, pour gagner en rapidité et ne pas toucher au contenu fixe.
Après je parlais de générer des documents bcp plus légers avec seulement du php pour faire sourir les bots de référencement. Ces documents n'auraient été affichés seulement suite à une recherche (google) puis n'offraient comme seule possibilité de lien, le site dans sa structure complète avec le contenu correspondant au document dont ils viennent.

Alors effectivement l'ajax complique les choses, mais ... dans l'état actuel, comment puis je faire au mieux?

Dans le cas (qui ne me plait pas trop) ou j'abandonne l'ajax pour systématiquement recharger toute la page par le moteur de template, donc en php, comment va se comporter le bot de rérérencement puisque tout le contenu textuel reste dans la base de donnée et n'est appelé qu'a l'action sur les liens qui passent de toute façon par du javascript (url exotique déterminé en fonction de l'id de l'élément de menu)? Je crois que même comme ça, le problème n'est que déplacé ailleurs...
 
WRInaute accro
Pour ton souci d'éléments fixes, la fonction php include aurait pu vous servir.

Pour ton deuxième souci, le moteur de recherche s'en moque que ton contenu textuel soit en base de donnée. Il ne voit pas le php mais la page html finale (bref ce que tu vois en affichant le code source dans un navigateur). Par contre génrer les liens en javascript n'est pas non plus une bonne idée. Le mieux est encore de passer par php, et d'utiliser l'Url Rewriting pour éviter le problème des url exotiques.
 
WRInaute accro
Bonjour
Pour avoir un aperçu de ce que voit un moteur de recherche, désactivez le Javascript, l'Ajax, les Cookies, (+le Flash ?) sur votre navigateur et surfez sur votre site. Ou alors utilisez un navigateur textuel (Lynx) et regardez si il y a des sections, des contenus, des pages, auxquels que vous ne pouvez accéder.
 
Nouveau WRInaute
Bien bien, je commence à y voir plus clair, vous m'avez tous beaucoup aidé, encore merci.
Je vais me renseigner sur l'url rewriting car je ne sais pas du tout comment ça marche :p
J'ai encore une dernière question, la qualité du référencement dépend de ce que le bot trouve à partir de l'index? ou bien il passe en revue tous les fichiers du serveur? Il me semble que c'est le premier cas mais j'ai besoin d'en être sûr.
 
WRInaute accro
En fait ta page d'accueil est souvent la page par laquelle le bot va découvrir le site (c'est souvent cette page qui est inscrite dans les annuaires où sur laquelle pointent les liens partenaires). Donc si elle est vide de tout contenu intéressant, ca ne donne pas forcément envie au bot de poursuivre son crawl, d'autant si tous les liens par lesquels il pourrait passer pour accéder au contenu sont géré via une techno (le JS) qu'il n'exécute pas.

Mais tes pages intérieures sont toutes aussi importantes, car c'est elles qui vont constituer le coeur de ton contenu.

Perso je vois une page d'accueil comme une porte ouverte sur le contenu d'un site. Donc elle doit permettre à celui qui la visite en premier lieu (visiteur humain comme bot) de comprendre en un clin d'oeil de quoi parle le dit site.
 
Nouveau WRInaute
et si mes pages internes ne sont pas pointées par ma page d'accueil? Si elles sont comme des "portes secondaires"? mais en revanche, elles pointes sur le site?
 
WRInaute accro
Lance un outil de type Xenu Link Sleuth sur ton site. IL se comporte comme un moteur de recherche et va crawler toutes les adresses qu'un moteur pourrait trouver. Tu pourras ainsi voir si il y a un problème dans la structure de navigation de ton site.
 
WRInaute accro
Jax a dit:
et si mes pages internes ne sont pas pointées par ma page d'accueil? Si elles sont comme des "portes secondaires"? mais en revanche, elles pointes sur le site?

Alors il va falloir te demander comment Google peut les trouver :)

Attention aussi aux "pages satellites", ça Google n'apprécie pas trop. Normalement tu entres dans un site par la porte principale (index.php ou .asp ou .turlututu) et ensuite tu te balades dans les pièces. Tu peux aussi éventuellement entrer par la terrasse ou par la porte fenêtre, mais c'est moins fréquent. Donc une pièce qui serait totalement innaccessible depuis l'entrée (même en plusieurs clics), ça pas bon.
 
Nouveau WRInaute
Au moins je suis fixé, merci à tous vous m'avez vraiment fait avancer, avant de terminer sur ce topic, est ce que quelqu'un aurait des ressources intéressantes à me conseiller pour me familiariser avec l'url rewriting?
 
WRInaute accro
Jax a dit:
Alors charger la page en php demande de systématiquement recharger toute la page avec sa structure qui elle, ne change pas. Voilà pourquoi on avait choisit l'ajax, pour gagner en rapidité et ne pas toucher au contenu fixe.
Comme l'a dit le Japonisant qui aime bien mon avatar de plastic-girl, les includes font exactement ça.

Jax a dit:
Après je parlais de générer des documents bcp plus légers avec seulement du php pour faire sourir les bots de référencement. Ces documents n'auraient été affichés seulement suite à une recherche (google) puis n'offraient comme seule possibilité de lien, le site dans sa structure complète avec le contenu correspondant au document dont ils viennent.

En gros, du cloaking (fournir aux bots un contenu différent de ce que voit l'utilisateur), ça pas bon du tout du tout. Quand c'est détecté, ça vaut des pénalisations. Dans ton cas ce sera vu comme une méthode de suroptimisation, je pense (contenu plus chargé en mots clés que la vraie page).

Jax a dit:
tout le contenu textuel reste dans la base de donnée et n'est appelé qu'a l'action sur les liens qui passent de toute façon par du javascript (url exotique déterminé en fonction de l'id de l'élément de menu)? Je crois que même comme ça, le problème n'est que déplacé ailleurs...
Ben ça pas bon non plus.

En gros, les règles de base du bon petit constructeur de site sont :
- ton menu sans java script fera (et le css c'est tellement super)
- toutes tes pages importantes à un clic de la page d'accueil tu mettras
- tout ton contenu à trois clics de la page d'accueil tu placeras (et le sitemap sert aussi à ça)
- ton contenu unique sera (pas de changement pour les bots)
- ton site visitable sera sans java ni ajax ni flas, J.A.F uniquement pour les fioritures utilisera

Pour tes urls -> url rewriting dans le fichier .htaccess
 
Nouveau WRInaute
très clair tout ça, par contre pour les includes il y a quelque chose qui m'échappe:

pour moi, les includes servent à considérer les classes, mais comment un includes peut il permettre de ne pas recharger la structure inchangée du site? sans doute un aspect du php que je ne connais pas. Comment ça se passe?
 
WRInaute accro
Pas mieux que la plastic girl. J'ai pour ma part utilisé la fonction include de php pour inclure des éléments html dans mes pages bien avant d'avoir fait mon premier if {} else {}.

Ta page peut ainsi avoir cette tête

Code:
<?php 
//inclusion du haut de page
include("haut_page.php");

//inclusion du menu de page
include("menu.php");
?>

<!--ICI LE HTML PROPRE A LA PAGE-->

<?php 
//inclusion du bas de page
include("bas_page.php");
?>
 
Nouveau WRInaute
très bien, je vois, c'est aussi ce qu'on fait en programmation objet, pour moi je n'avais considéré l'include que comme on le ferait en C ou en Java pour inclure une librairie, mais je vois ce que vous voulez me faire faire avec.
Je n'avais pas vu ça comme cela, l'inconvénient c'est que l'intégralité de la page est rechargée malgré tout, et que seul l'ajax permet de n'en charger qu'une partie.
 
WRInaute accro
Faire ca en Ajax peut avoir intérêt dans des cas très particulier (zone particulière à mettre à jour après action utilisateur), mais utiliser l'Ajax pour afficher le contenu principal d'une page lors de son affichage, c'est vraiment se mettre des barrière pour le référencement (et pour la navigation des visiteurs bloquant le JS ou n'ayant pas le JS).
 
Nouveau WRInaute
tout à fait d'accord, surtout après avoir recueillit toutes vos précieuses recommandations, à un détail près... désactiver le javascript, c'est un peu comme remettre des manivelles à ses vitres éléctriques quand même... :p
 
WRInaute accro
On ne parle pas de désactiver le javascript, mais de faire en sorte que les éléments essentiels du site soient accessibles sans javascript.

N'oublie jamais qu'il y a des gens qui surfent sans java, notamment les malvoyants. Alors faire l'effort d'avoir un site accessible pour tous, c'est comme construire des rampes d'accès à l'entrée des administrations : ça ne sert pas à grand monde, mais c'est utile.
 
Discussions similaires
Haut