Vous êtes sur la page 1sur 264

Copyright 2009 Micro Application - 20-22, rue des Petits-Htels - 75010 Paris 1re dition - Fvrier 2009 Auteur

r - Gilles GREGOIRE

Toute reprsentation ou reproduction, intgrale ou partielle, faite sans le consentement de MICRO APPLICATION est illicite (article L122-4 du code de la proprit intellectuelle). Avertissement aux utilisateurs Cette reprsentation ou reproduction illicite, par quelque procd que ce soit, constituerait une contrefaon sanctionne par les articles L335-2 et suivants du code de la proprit intellectuelle. Le code de la proprit intellectuelle nautorise, aux termes de larticle L122-5, que les reproductions strictement destines lusage priv et non destines lutilisation collective dune part, et dautre part, que les analyses et courtes citations dans un but dexemple et dillustration. Les informations contenues dans cet ouvrage sont donnes titre indicatif et nont aucun caractre exhaustif voire certain. A titre dexemple non limitatif, cet ouvrage peut vous proposer une ou plusieurs adresses de sites Web qui ne seront plus dactualit ou dont le contenu aura chang au moment o vous en prendrez connaissance. Aussi, ces informations ne sauraient engager la responsabilit de lEditeur. La socit MICRO APPLICATION ne pourra tre tenue pour responsable de toute omission, erreur ou lacune qui aurait pu se glisser dans cet ouvrage ainsi que des consquences, quelles quelles soient, qui rsulteraient des informations et indications fournies ainsi que de leur utilisation. Tous les produits cits dans cet ouvrage sont protgs, et les marques dposes par leurs titulaires de droits respectifs. Cet ouvrage nest ni dit, ni produit par le(s) propritaire(s) de(s) programme(s) sur le(s)quel(s) il porte et les marques ne sont utilises qu seule n de dsignation des produits en tant que noms de ces derniers. ISBN : 978-2-300-016134 Couverture ralise par Sbastien Wiegant MICRO APPLICATION 20-22, rue des Petits-Htels 75010 PARIS Tl. : 01 53 34 20 20 Fax : 01 53 34 20 00 Support technique : galement disponible sur www.microapp.com http://www.microapp.com

Retrouvez des informations sur cet ouvrage ! Rendez-vous sur le site Internet de Micro Application www.microapp.com. Dans le module de recherche, sur la page daccueil du site, entrez la rfrence 4 chiffres indique sur le prsent livre. Vous accdez directement sa che produit.

1613

Avant-propos
La collection Webmasters sadresse aux personnes inities au dveloppement de sites web qui souhaitent dcouvrir et mettre en pratique les nouvelles technologies Internet. Sans ngliger les aspects thoriques, nous donnons toujours priorit la pratique an que vous puissiez rapidement tre autonome. travers les diffrents titres de cette collection vous dcouvrirez les technologies qui font le web 2.0 et feront ce que certains nomment dj le web 3.0.

Conventions typographiques
An de faciliter la comprhension des techniques dcrites, nous avons adopt les conventions typographiques suivantes :
j j j j

gras : menu, commande, bote de dialogue, bouton, onglet. italique : zone de texte, liste droulante, case cocher, bouton radio. Police bton : instruction, listing, texte saisir. : dans les scripts, indique un retour la ligne volontaire d aux contraintes de la mise en page.

Il sagit dinformations complmentaires relatives au sujet trait. Propose conseils et trucs pratiques.

Mise en garde sur un point important ne pas ngliger.

Sommaire
1
Optimiser des pages pour Google 18

1.1

Des concepts et termes techniques matriser ........................ Mots, expressions cls, requte, SERP .................................... Google et les landing pages ................................................ Architecture trs simplie dun moteur .................................... Mots-cls et Google writing ................................................. Cookies, sessions et URL ..................................................... Lien et backlinks ................................................................ Premire approche du Page rank .......................................... Structure de site : hirarchiser ............................................... Le rfrencement : un savoir-faire difficile acqurir ................... Codage web2.0 et rseaux sociaux ..................................... Principes du rfrencement et du positionnement naturel ..............

20 20 20 23 24 24 26 27 28 28 29 31

1.2 1.3 1.4 2

La formule magique du rfrencement .................................. 34 Tricher ou non en rfrencement ......................................... 35 Spamdexing : les diffrentes techniques de triche ...................... 36 Rsum .......................................................................... 40
42

Automatiser le rfrencement avec PHP et MySQL

2.1 2.2 2.3 2.4

Introduction .................................................................... 44 Codes sources site web exemple du livre ............................ 44 Coder une optimisation de page pour Google ....................... 45 Donnes, mots-cls, rfrencement et mthodologie ................ 47 La structure de page en MySQL ............................................ 48 Rsum et tape suivante .................................................... 54 Rfrencement, positionnement naturel : principes ................. 54 Publication de pages dynamiques ....................................... Prsentation du site publi ................................................... Gnration de pages dynamiques article.php ....................... Initiation rapide HTACCESS .............................................. Lister tous les articles dune rubrique ....................................... Gnration de pages dynamiques zoom.php ........................ 56 58 66 68 72 93

2.5 2.6

2.7

Rsum .......................................................................... 98

Sommaire

Page rank sculpting et backlinks

100

3.1 3.2 3.3

Introduction .................................................................. 102 Principe dun backlink ..................................................... 102 Principe du Page rank (PR) ............................................... 103 Les critres quantitatifs dun backlink ..................................... 103 Les critres de cohrence dun backlink ................................ 104 Algorithme, nuages de liens et landing pages ...................... 106 Algorithmes : Automatiser les liens dun nuage ........................ 107 La formule "officielle" du Page rank ................................... 110 Piloter la stratgie de rfrencement .................................. 113 Administrer les nuages de liens ........................................... 114 Afficher un nuage de liens : zoom.php ................................. 124 Rsum ........................................................................ 131
132

3.4 3.5 3.6

3.7 4

Rfrencement et gestion de session

4.1 4.2 4.3 4.4

Pourquoi la gestion de session ? ....................................... 134 Cookies et gestion de session par URL ................................ 134 Les objectifs du codeur/rfrenceur en gestion de session ...... 136 Gestion de sessions en URL rfrences .............................. Session en URL invisible Google ....................................... Code source session invisible Google ................................ Code source de region.php ............................................... 139 139 140 148

4.5

Protger son site des hackers ............................................ 153 .htaccess et contrle daccs ............................................. 153
156

Rfrencement et Web 2.0

5.1

Web 2.0 et Google ....................................................... 158 Rseaux sociaux et URL de pages ........................................ 158 Contribution des internautes Web 2.0 .................................. 158 Rseau social et rfrencement ......................................... 159 Interactivit Web 2.0 et rfrencement automatis ............... 163 Dtails des algorithmes ..................................................... 164 Rsum ........................................................................ 178

5.2 5.3 5.4

Sommaire

Pages absentes ou mal positionnes dans Google

180

6.1

Symptmes et causes. ..................................................... 182 Les pnalits distribues par Google .................................... 182 Les causes dj vues ........................................................ 183 Pages mal positionnes : dautres causes ............................ Les sites concurrents ......................................................... Les backlinks .................................................................. JavaScripts .................................................................... Frame .......................................................................... Les limites des feuilles de style ............................................. Splash Page .................................................................. Une page : une langue .................................................... Spamdexing involontaire .................................................. Dtecter une triche : facile ! ............................................... Optimisations trop agressives ............................................. 184 184 185 185 186 187 189 191 191 191 192

6.2

6.3 6.4 7

Flash et le rfrencement dans Google ............................... 193 SWFobject2 pour indexer du Flash ...................................... 194 Rsum ........................................................................ 195
196

Google personalized search results

7.1 7.2 7.3 7.4

Les rgles du positionnement vont changer .......................... 198 Intrts des rsultats de recherche personnaliss ................... 202 Arrive de Personalized Search Results .............................. 204 Les informations personnelles utilisables ............................. 205 Google affiche des limites ................................................. 205 Rsumons-nous sur Personalized search resultats ...................... 207 Pourquoi Personalized search results ? ............................... Lamlioration des SERP .................................................... Freiner les rfrenceurs ..................................................... La crise conomique ........................................................ Un avantage concurrentiel important .................................... Les limites imposes Google .......................................... Le systme doit sauto duquer ............................................ Ne pas froisser les utilisateurs ............................................. Ne pas planter le service .................................................. 208 208 208 209 209 210 210 212 212

7.5

7.6

7.7

Baisse ou hausse du trac ................................................ 213 Les constantes ................................................................ 214

Sommaire

7.8

Rfrenceur 2.0 ............................................................. Mieux comprendre la logique de personnalisation ................... Principes probables de la personnalisation ............................ Web analytics et rfrencement naturel ................................. Programmation et rfrencement naturel ................................ Google writing et rfrencement naturel ................................ bauche dalgorithme : rfrencement et personnalisation .........

215 215 220 225 227 227 228

7.9 8

Rsum ........................................................................ 230


232

Annexe - Webographie

8.1 8.2 8.3 8.4 8.5

Outils pratiques ............................................................. 234 Pour soumettre une URL ..................................................... 235 Conseils, astuces et dpannages ....................................... 236 Rsultats de recherche personnaliss .................................. 237 Normes et manuels ........................................................ 237 Thorie des graphes ........................................................ 237 URL de codes sources ..................................................... Session invisible pour Google ............................................ Feuille de style ................................................................ Rseaux sociaux ............................................................. 238 238 239 239
241

Index

Utiliser ce livre 100 %


Ce livre, ddi au rfrencement et au positionnement dans les moteurs de recherche et plus particulirement dans Google, est conu pour vous apporter des connaissances, des exemples sous diffrentes formes dont du code source. La complexit va croissante au l des chapitres, approche pdagogique classique pour permettre au plus grand nombre dacqurir un maximum de connaissances. La programmation de sites web dots dun rfrencement automatis de bonne qualit va entraner le lecteur dans une situation conictuelle. En effet, cette programmation offre une palette assez intressante dans la carrire dun codeur : programmer pour rpondre aux exigences des moteurs de recherche dont Google, le leader actuel, est trs souvent contradictoire avec les besoins et exigences de tous les autres intervenants dans la conception, puis la production et enn la maintenance du site. Les besoins de mise en page du rfrenceur (donc les algorithmes de mise en page automatique que vous allez coder) seront plus ou moins en conit avec les besoins de mise en page en charge de sduire les internautes. Les besoins de navigation et dergonomie du site, pour les internautes, sont souvent contradictoires avec les besoins du rfrenceur. Il existe donc des conits dans les demandes faites aux dveloppeurs pour coder les programmes. Il faudra donc identier des compromis et les coder en consquence. Il y a une innit de cas particuliers. Il est bien sr impossible de tous les traiter dans ce livre.

Introduction

Nanmoins, pour rpondre un maximum de cas, nous aborderons les diffrentes problmatiques une par une, avec les explications exposant le contexte. Dans lexemple de site web, nous traiterons galement des cas classiques de conits entre les intervenants et le codeur/rfrenceur. Le but de ce livre est de vous "apprendre pcher" et non de vous servir des "poissons prts lemploi". Vous aurez adapter le contenu de ce livre vos propres besoins. Dernier point, cet ouvrage est consacr au rfrencement et non aux subtilits de la programmation PHP/MySQL. Charge chaque codeur dadapter ses Framework, mthodes, habitudes, savoir-faire aux exemples de codes sources utiliss. Laccent de ces codes sources est mis sur la lisibilit et non sur la mise en uvre de gnie logiciel ou doptimisation dans la gestion des ressources processeur, mmoire ou disques durs.

PHP, MySQL, XHTML, etc.


Les lecteurs de ce livre ont typiquement la charge de dvelopper, de coder des sites Internet en faisant appel diverses technologies complmentaires. Ces diffrents modules collaborent pour permettre le fonctionnement dun site web dynamique sadressant de multiples internautes simultanment :
j j j j j j

systme dexploitation : Linux par exemple ; moteur http, par exemple : Apache ; langage de codage des pages, par exemple XHTML/CSS ; langage de script ct navigateur, JavaScript par exemple ; langage de script ct serveur : PHP5 ; base de donnes relationnelles : MySQL par exemple.

Il existe de nombreux autres logiciels capables de raliser les tches de ces diffrents modules : Microsoft Windows Server, Microsoft IIS, ASP, VBScript, etc. On peut mme coder des sites Internet dynamiques sur des Mainframes IBM.
Logiciels libres
Dans le prsent ouvrage, nous ciblerons le plus grand nombre, ceux qui dveloppent des sites avec des technologies logiciels libres comme Linux, Apache, PHP

10

Introduction

Nanmoins, tous les principes et codes sources voqus dans ce livre avec XHTML/CSS, PHP/MySQL, Apache sont utilisables avec des technologies propritaires comme celles de Microsoft ou dautres.
j j j

Apache vs. IIS ; PHP vs. ASP ou .NET ; MySQL vs. SQL Server.
Microsoft et autres environnements propritaires

Les algorithmes indiqus, les rgles de fonctionnement et de comportement sont valides et aiss transposer du logiciel libre vers le monde Microsoft ou vers dautres environnements propritaires.

c Fig. 1 : Page daccueil du site exemple utilis dans ce livre

11

Introduction

Erreur mthodologique majeure viter


Un site web visible via Google
Un site Internet peu visible nest gure utile son possesseur. Il est crucial, pour la majorit des sites web, dtre visibles sur leurs mots-cls dans les SERP, Search Engines Pages Results, les pages de rsultats renvoyes par Google ou autre moteur de recherche tout internaute envoyant une requte sur ledit moteur.

Quand un codeur reoit un cahier des charges pour analyser puis coder un site Internet, ce dernier a dj t analys fonctionnellement puis conu par le marketing et les chefs de projets. Dans lesprit du "client" qui va dployer et proter du trac sur le site, le site devra tre index et bien positionn dans Google ds que possible.
Le rfrencement, dernire tape ?
En gnral, dans lesprit de nombreux acteurs du march, on traite le rfrencement en dernier comme une simple action technique. Rien nest plus faux. Pour amliorer la qualit du rfrencement et diminuer dlais et cots en tout genre, il est fondamental dintgrer le rfrencement dans les problmatiques danalyse et de conception fonctionnelle du site. Le prsent ouvrage aidera le codeur pallier partiellement ce type derreur mthodologique.

Dans lobjectif dune dmarche qualit, le marketing ou le service en charge du dossier doivent tre sensibiliss aux contraintes du rfrencement et la dmarche incluse ds la conception du projet. Rchir au rfrencement et au positionnement dun site en dernire tape est une erreur mthodologique majeure qui nuira au succs de cette tche. Le nombre de mots et expressions cls en franais ou dans dautres langues est forcment limit. Plus il y a de sites web en comptition sur une expression cl donne, plus lobtention dun bon rang, dun bon positionnement dans les SERP de Google devient difficile et exige un travail de qualit. Ce sont les meilleurs qui gagnent. Cest la meilleure quipe qui gagne. Web marketeur, codeur, chef de projet constituent une quipe qui doit tre coordonne pour tre efficiente.

12

Introduction

c Fig. 2 : Organisation projet web intgrant le rfrencement sur Google en amont

13

Introduction

Enjeu stratgique : automatiser le rfrencement


La plupart des acteurs du web appellent et fusionnent, improprement, le rfrencement et le positionnement dans les premires pages de rsultats de Google : "rfrencement sur Google". Il existe bien deux tapes distinctes, faisant appel des savoir-faire diffrents :
j j

Le rfrencement regroupe les actions techniques sur le site. Le positionnement regroupe dune part les actions web marketing, donc aucunement techniques sur le site et dautre part la gestion des tags clouds, des nuages de liens utiliss pour la navigation dans le site ou vers lextrieur, donc une action technique interne au site.

Nous y reviendrons en dtail plus loin. Les actions techniques sur le site ont toutes un point commun : la rptition dactions techniques basiques et lmentaires sans oubli ni erreur. La consquence est vidente : rfrencer techniquement un site est long et fastidieux pour un tre humain. En dautres termes, un rfrencement strictement manuel cotera cher et pourra, malgr tout, contenir des erreurs prjudiciables la qualit et aux performances.
Meilleure qualit et un cot diminu
En automatisant les multiples tches fastidieuses du rfrencement technique au sein du site, on amliorera fortement la qualit du rfrencement et du positionnement tout en diminuant nettement les cots.

Il ny a pas que cet aspect qualit et optimisation des investissements. Un autre aspect stratgique, capable de confrer un avantage comptitif au possesseur du site, intervient dans lautomatisation du rfrencement dun site : piloter et adapter la stratgie de rfrencement depuis une simple table SQL.
Piloter la stratgie de rfrencement depuis une table
Nous verrons dans ce livre quil existe un zone commune toutes les actions techniques de rfrencement : les mots-cls. Il faut les disposer, les baliser, les ancrer, les pointer, les lier, etc. Mais on manipule toujours des mots- cls. Administrer la rpartition des mots-cls sur les pages dun site Internet, depuis une simple table MySQL, simplie et automatise le rfrencement tout en le rendant plus efficace, en travaillant en "temps rel" pour un cot ngligeable. Cela confre un avantage comptitif important.

14

Introduction

Organisation de cet ouvrage


Inutile de rentrer directement dans le codage des codes sources avant davoir compris :
j j j

les fondamentaux des moteurs de recherche et de Google en particulier ; les problmatiques de rfrencement et autres cadratures de cercles rsoudre ; les multiples piges du rfrencement.

Les premiers chapitres exposeront, en vagues successives, les principes et le pourquoi du rfrencement. On pourra ensuite passer lalgorithmique mettre en uvre plus facilement et illustrer ces approches avec des exemples simples de codes sources en PHP/MySQL/XHTML/CSS.

Objectifs et enjeux de ce livre


Les enjeux du codage correct en rfrencement dun site web portent sur plusieurs points :
j

Un site accessible techniquement sera pris en compte par Google. Autrement, il sera ignor. Coder sans bloquer les bots de Google ou sans dclencher des pnalits iniges par Google suite des erreurs techniques sur le site est un des devoirs du codeur. Un site accessible smantiquement sera "compris" par Google. Le choix des mots-cls et autres rexions web marketing nest pas de son ressort, bien sr. Mais la partie codage pour mettre en uvre efficacement les dcisions web marketing est du ressort du codeur. Le webmestre aura en charge, quant lui, la conception de la mise en page adquate et laissera le codeur lautomatiser. Un site cod de manire pouvoir aisment et efficacement manipuler les bots de Google et les algorithmes dindexation de Google offre plusieurs avantages. Le site web sera davantage ractif aux instructions du traffc manager en charge de booster laudience : en peu de temps, de nouveaux mots-cls sont ajouts, retirs, modis sur la globalit du site tout en prservant la cohrence. Face un tel site, Google ragit positivement via un meilleur positionnement aussi rapide que le permettent les freins internes Google contre une ascension trop rapide dans un index sur un mot-cl prcis. Un codeur, un chef de projet, un webmestre, un traffic manager matrisant les concepts exposs dans les lignes prcdentes aura une bien meilleure employabilit

15

Introduction

sur le march du travail, un meilleur salaire, de meilleur bonus et primes quun codeur ne se proccupant pas de la qualit de son code et de ses mthodes face aux exigences de Google. Un site mal cod gnera le positionnement nal dans lindex de Google ; il aura donc une inuence ngative sur les performances commerciales du site.

Pdagogie et public cibl par ce livre


Cet ouvrage cible tous les techniciens, du chef de projet au webmestre en passant par les rfrenceurs, en charge danalyser, coder, dployer un site Internet et den assurer la maintenance.
Une monte en puissance progressive
Pdagogiquement, nous commencerons toujours par exposer le pourquoi de tel algorithme ou de telle approche technique an que toute personne puisse nous lire, quelle soit dbutante ou conrme en techniques sur le codage de sites. Nous exposerons ensuite lalgorithme en lexpliquant. Cela passe par un expos du fonctionnement de Google et autres moteurs. Enn un code source exemple sera comment.

Comprendre le pourquoi dun algorithme ou dune approche implique dexposer, de manire dtaille, le fonctionnement de Google vu par un rfrenceur et donc les attentes respecter pour tre "compris" par le moteur et mieux positionn.
j

Le chef de projet identiera les questions et approches mettre en place dans son protocole danalyse fonctionnelle et dans les changes avec le client pour rdiger un cahier des charges prenant en compte, ds le dbut, le rfrencement et le positionnement obtenir pour le site. Le webmestre, dbutant ou conrm, dsireux de hisser les pages de son site Internet sur des mots-cls prcis dans lindex de Google, comprendra mieux les interactions des diffrentes optimisations. Le webmestre pourra planier et raliser de multiples actions techniques plus cohrentes, mieux codes, plus efficaces plutt que de travailler sans comprendre toujours ce quil fait ou en consacrant son temps prcieux des tches rptitives et fastidieuses. Le Traffic Manager dsireux de mieux apprhender Google et le rfrencement naturel comprendra davantage les problmatiques techniques que les codeurs et chefs

16

Introduction

de projets doivent grer. Il pilotera plus efficacement ses budgets et ses campagnes de web marketing tout support. Le codeur informatique ayant en charge de dvelopper ou coder lautomatisation du rfrencement dun site Internet trouvera des explications et des exemples en codes sources.

17

1
1.1 Des concepts et termes techniques matriser ....... 1.2 La formule magique du rfrencement ................ 1.3 Tricher ou non en rfrencement ...................... 1.4 Rsum de ce chapitre ................................. 20 34 35 40

Optimiser des pages pour Google


C
e chapitre a pour objectif dexposer les concepts du rfrencement naturel et du positionnement. Ces deux approches complmentaires ont pour but de faire apparatre une page prcise, la landing page ou page datterrissage, dans une page de rsultats de Google sur une expression cl donne.

Optimiser des pages pour Google

1.1 Des concepts et termes techniques matriser


Comme nous lavons dj crit dans la prface, il est inutile de rentrer dans un code source sans connatre et comprendre les raisons des algorithmes coder.
Comprendre, connatre les technologies du Web
Les lecteurs du prsent ouvrage sont de prol technique ou possdant un solide "vernis" technique. La pdagogie des explications suivra ce principe. Il ny aura pas dexplication sur les mcanismes de base des technologies du Web. Le lecteur est cens connatre un minimum de HTML et de XHTML, des feuilles de style CSS et du codage en PHP ou en JavaScript.

Nous allons aborder les concepts du rfrencement et les illustrer au l des paragraphes puis prciser les parties qui concernent particulirement le codeur. Voici quelques concepts ou dnitions comprendre an de vous permettre de mieux lire et utiliser ce livre.

Mots, expressions cls, requte, SERP


Une expression cl est compose de mots-cls. Une expression cl est utilise par les internautes pour rechercher un lment plus ou moins prcis via une requte saisie dans un moteur de recherche. Exemple : lexpression cl "TV plasma FULL HD" est compose de quatre mots-cls. Un moteur de recherche renvoie les rsultats dune requte vers linternaute sous la forme dune suite de 1 100 pages maximum avec 10 rsultats par page. On appelle ces pages des SERP (Search Engine Results Page(s)), acronyme anglais signiant : page(s) des rsultats retourne(s) par le moteur de recherche linternaute lui ayant soumis une requte.

Google et les landing pages


Google rfrence des pages HTML et non des sites Internet. Nous verrons que de nombreuses consquences en dcoulent et que cela impacte fortement la structure du site, la stratgie de rfrencement globale du site et le travail doptimisation de chaque page. Une premire consquence du rfrencement de pages HTML et non dun site va inuencer le travail du codeur de site. Le web marketing ou le rfrenceur exposera la ncessit de prvoir des pages datterrissage (landing pages) pour les expressions cls stratgiques du site.

20

Des concepts et termes techniques matriser

Quelques explications simposent pour que le codeur comprenne ce que lon va attendre de lui. On peut classer les expressions cls dun site en trois grands groupes :
j j j

Stratgiques : elles sont lorigine des "meilleurs" prospects et clients, dun grand pourcentage du trac du site, etc. Importantes : elles contribuent fortement au trac et au "business" du site. Longues tranes : les dclinaisons multiples de ces expressions cls gnrent une longue trane : de multiples petits ruisseaux dinternautes arrivent sur le site via une innit de combinaisons de mots-cls. Et les petits ruisseaux, force dtre assembls, forment des rivires intressantes en volume de trac.

Il ne suffit pas de bien positionner la page daccueil du site sur une expression cl dans lindex de Google. Il faut que linternaute ait envie de cliquer sur le rsum prsent dans la SERP de Google. Et sil clique sur le lien depuis la SERP de Google, il faut quil soit intress par ce quil voit dans la page du site qui saffiche. Autrement, il rebondira en zappant sans mme lire les informations de la page qui lui sont destines.
c Fig. 1.1 : De la SERP Google via le snippet incitatif au clic jusqu la landing page.

Pour amliorer le taux de clics dans la SERP, il faut concevoir la page an de matriser ce que Google affichera. Sil y a trop de mots ou dexpressions cls grer pour une page, cas classique de la page daccueil du site, il sera impossible de raliser correctement ce travail. Il faut donc spcialiser la page sur quelques mots-cls.

21

Optimiser des pages pour Google

3 7 mots-cls maximum rfrencer sur une page


Nous verrons plus loin pourquoi, mais il est trs difficile de dpasser la limite de 5 7 mots-cls rfrencer par page. De plus, arriver prvoir le rsum de texte que Google affichera dans la SERP devient dune complexit exponentielle, mesure que lon ajoute des mots-cls prendre en compte dans une page.

Une autre raison justie la mise en place dune landing page spcialise sur quelques mots-cls. Linternaute, sduit par le rsum de la page affich dans la SERP de Google, clique et visualise alors la page. Si cette page ne le sduit pas en 2 secondes environ, il rebondit (zapper) hors du site. Il est trs difficile de concevoir une page daccueil capable de sduire des internautes trs divers requtant sur de multiples mots-cls. Il est plus facile de concevoir une telle page si elle est spcialise pour chaque expression cl stratgique. Le rsum de la page affich par Google dans une SERP est compos de 2 parties distinctes :
j j

le title de la page, limit une dizaine de mots ; de un deux extraits de quelques mots, chacun contenant la premire occurrence de chaque mot-cl composant lexpression cl saisie en requte.

Ce rsum est trs important pour le web marketing. Il conditionne le taux de clics sur le rsum de la page pour emmener linternaute intress vers la page elle-mme. Russir caser plus de 5 mots-cls en conservant une lisibilit correcte dans un title limit 10 mots maximum relve de lexploit difficile ritrer sur toutes les pages du site. Il est donc draisonnable de tenter de dpasser cette limite sur les landing pages.
Perfectionner le title et les mots-cls
Linternaute va lire dans la SERP de Google un rsum de la page propose. Ce rsum est compos du title et dun extrait de la page contenant les mots-cls de sa requte. Soigner particulirement cette rdaction dans chaque landing page augmentera le taux de clics depuis les SERP de Google. Celui-ci mesure ces clics vis--vis des mots-cls de la requte. Plus il y a de clics, plus il a tendance hisser la page en positionnement sur ces mots-cls.

Il est concevable, pour un codeur, de crer un backoffce de site Internet en charge dautomatiser la gestion de la partie rptitive de ces problmatiques.

22

Des concepts et termes techniques matriser

Architecture trs simplie dun moteur


Le but de ce premier paragraphe est dexpliquer le minimum connatre pour un codeur sur le principe de fonctionnement dun moteur de recherche. Un moteur de recherche accde aux pages des sites sur Internet via une multitude de petits programmes, les bots, qui suivent les liens lisibles de chaque page de tout site web.
Bot
Ce petit programme informatique est lanc des millions dexemplaires sur des milliers de serveurs de Google. Un bot simule un internaute mal voyant capable uniquement de "lire" les donnes de type texte. Limpact sur les techniques doptimisation est trs important. Un bot suit uniquement les liens en dur. Il ne peut interprter les liens "programms" en JavaScript, en Flash ou autre langage. Il tlcharge chaque page sur laquelle il passe via les liens qui interconnectent ces pages entre elles. Ces pages sont ensuite cartographies par dautres programmes de Google.

Google est composs dalgorithmes, de robots logiciels, lancs squentiellement pour raliser une mission unique jamais nalise : indexer sur leurs mots-cls les pages de tout lInternet techniquement accessible. Ces programmes de Google nont pas la nesse de lesprit humain, ils sont plutt "basiques" mme sils sont capables de traiter un volume norme dinformations. Pour amliorer son rfrencement, il est crucial de se mettre au niveau de ce type de programme et des attentes sous-jacentes.
c Fig. 1.2 : Principe fonctionnel de lindexation.

23

Optimiser des pages pour Google

Un bot de Google cartographie tout ce qui est accessible en donnes des pages dun site. Les donnes cartographies sont stockes sur un serveur. Puis dautres programmes Google analysent les donnes cartographies et ils les indexent. Nous verrons plus loin les principes de lindexation pleine page. Une fois les pages de ce site indexes, un algorithme va les positionner parmi les pages dj indexes sur chaque mot-cl de chaque page de ce site.
Lenjeu du rfrencement
Lenjeu du rfrencement puis du positionnement est dinuencer le moteur pour avoir, en haut de lindex, la landing page du mot-cl cibl. Le rle du codeur est fondamental et peut faire la diffrence entre des sites concurrents sur la mme expression cl stratgique.

Mots-cls et Google writing


Le Google writing dsigne une technique rdactionnelle adapte loptimisation de la rdaction de texte pour le moteur Google (et les autres aussi). Ce travail, qui est du contenu, est la charge du rdacteur. Le rdacteur utilisera au maximum les mots-cls quon lui a dsigns. Mais la mise en page associe au Google writing est dvelopper par le codeur : conteneur XHTML, feuille de style avec des entres doubles (mme rsultats visuels de 2 classes distinctes codes diffremment) et autre optimisations. Le codeur verra dans le prsent ouvrage pourquoi et comment automatiser une mise en page capable de mieux optimiser une page pour Google.

Cookies, sessions et URL


Un cookie est un code de marquage envoy par un site Internet sur votre disque dur. Ce code est unique. Si vous revenez sur le site Internet auteur dudit cookie, seul ce site, son auteur, peut y accder et le lire pour vous identier et ainsi appliquer vos attentes en affichages, en donnes prfres et pour de multiples autres usages comme le contrle daccs, par exemple. Le codeur de site doit savoir quun bot de Google naccepte pas les cookies. Les pages verrouilles par ce procd lui seront illisibles si le cookie est obligatoire pour accder au contenu. Nous verrons quune mauvaise gestion des cookies peut entraner des pnalits par Google. En effet, le moteur peut prendre des maladresses de codage pour du spamdexing et donc ragir en sanctionnant plus ou moins fort la page HTML gnre par votre site dynamique.

24

Des concepts et termes techniques matriser

c Fig. 1.3 : URL surcharge de amazon.fr sur le livre Saga Fascination, Tome 4 : Rvlation

Le web marketing est en gnral conscient que dans 10 15 % des cas, un cookie est impossible poser ou grer. Il nest pas able de baser des applications web sur la gestion de cookies, sauf accepter les internautes rtifs aux cookies ou un taux derreur de 10 15 %. Une page HTML possde une seule URL. Et une URL correspond une seule page HTML. Cette notion pour Google dune URL unique pour une page contenu unique a un norme impact sur la publication des contenus dun site et sur la gestion des liens internes dans un site. Le codeur devra grer de multiples conits susceptibles de passer pour du spamdexing auprs de Google.
Un mme article peut appartenir plusieurs thmes
Un exemple parmi dautres, juste pour illustrer le propos : soit un site publiant des articles sur la (bonne) gestion des entreprises. Un article sur les charges sociales de la rmunration dun dirigeant a un contenu prcis mais intressant plusieurs thmatiques : la scalit, les charges sociales, la gestion nancire. On risque donc dans un site de trouver : www.bonne-gestion.fr/fiscalite-entreprise/charges-remuneration-dirigeant.html ; www.bonne-gestion.fr/charges-sociales/charges-remuneration-dirigeant.html ; www.bonne-gestion.fr/gestion-financiere/charges-remuneration-dirigeant.html. Soit, trois URL distinctes pour une mme page. Cest viter. Nous verrons plus loin une technique pour coder en vitant la visibilit par Google de ce type de conit nfaste au bon positionnement dans lindex du moteur.

Une session se caractrise par lajout dans lURL dun ou plusieurs codes permettant de personnaliser les changes avec un internaute prcis ou ayant un prol prcis. Par rapport aux cookies, cette mthode offre lavantage dtre 100 % able. Linconvnient, cest que Google napprcie pas trop. En effet, on trouve de tout dans les URL session : des jetons dauthentication, des codes permettant la logique des scripts PHP de ragir, etc.

25

Optimiser des pages pour Google

c Fig. 1.4 : Dans Google, URL amazon.fr sur le mme contenu : livre Saga Fascination, Tome 4 : Rvlation

Au nal, il existe de multiples URL diffrentes pointant vers une seule page physique. Les sessions introduisent donc de massifs duplicate content dans le site. Google a lhabitude et il se contente de plus ou moins bien dsindexer les URL surnumraires. L, le web marketing (le rfrenceur) se heurte un problme que le codeur va devoir rsoudre : "Comment connatre lURL qui va survivre la purge de Google ?". La rponse est importante, car les mots-cls composant une URL participent au rfrencement. Si Google limine lURL en charge de vhiculer des mots-cls et prend en compte une URL truffe de codes de session comme valide, le site perdra en qualit de rfrencement et donc en positionnement.

Lien et backlinks
Les pages HTML dun mme site web ou de diffrents sites sont relies par des liens.
Lien en dur
Quand un lien est directement accessible, cest--dire quil nest pas enfoui dans un codage informatique de type JavaScript, on dit que cest un lien "en dur". Un lien en dur apparat en bas du navigateur quand la souris le survole.

Les liens en dur sont visibles et accessibles par tout type de navigateur, dont ceux conus pour les mal voyants et les priphriques Braille avec voix de synthse associe. Les bots des moteurs de recherche accdent uniquement aux liens en dur. Ils peuvent les suivre pour cartographier les contenus des pages ainsi relies. Les liens enfouis dans des codes informatiques sont invisibles aux bots. Un backlink dsigne un lien en dur entrant sur une page. Ce lien peut tre issu :

26

Des concepts et termes techniques matriser

j j

dune page du mme site web (le nom de domaine est identique pour les deux URL des deux pages interconnectes par ce lien) ; dun autre site.

La nuance entre lien en dur et backlink tient la position do on sexprime. Lorsquon fait rfrence une page et que lon souhaite dsigner les liens en dur pointant vers ladite page et utiliss pour travailler le positionnement dans lindex de Google sur un ou des mots-cls, on parlera de backlinks. Cest plus court, plus concis et plus clair que de parler de liens en gnral. Quand on veut voquer un lien en gnral, donc un lien en dur, cod dans un Flash ou en JavaScript, on emploie la dnomination gnrique de lien.

Premire approche du Page rank


Le Google Page rank dsigne lindice de popularit dune page HTML calcul par des algorithmes de Google. Nous considrerons que cet indice reprsente grossirement le volume en backlinks pointant vers ladite page. Cela correspond une forme de popularit. Plus une page reoit de liens, plus cela indique que des internautes la trouvent intressantes car ils lcrivent dans des sites, des blogs, des forums, etc. Plus il y aura de backlinks poss par ces internautes, plus la popularit de la page cible par ces backlinks augmentera. Le Page rank est affich dans la barre doutils Google pour Firefox ou pour IE.
c Fig. 1.5 : Barre doutils Google : Page Rank affich.

Le Page rank (acronyme PR) agrge de nombreuses autres informations. Dans un post sur le blog officiel de Google, Matt Cutts, le responsable de lantispam team de Google, rpond une question dun webmestre en indiquant que le Page rank est utilis pour "calculer" qui est lorigine dun texte ; sous entendu, les pages ayant ce mme texte seront considres comme des duplicates content, des copies qui seront ignores par Google.
Le Page rank est trs important
De nombreux posts dans des forums et des blogs dnigrent lintrt du Page rank. Cest une erreur. Le PR sert de levier de nombreuses actions de Google. En avoir augmente potentiellement lefficacit du rfrencement et du positionnement, condition de lutiliser. Il faut lemployer correctement, bien sr.

27

Optimiser des pages pour Google

Structure de site : hirarchiser


Un site web est destin publier des contenus. Larchitecture du web ncessite de structurer ces contenus en rubriques, sous-rubriques, pages relies par des liens groups en menus. La structure de publication est exprime par lergonomie des liens, des menus, de la navigation. La qualit de cette structure a un norme impact sur le positionnement. Plus la structure est "cartsienne", clairement hirarchise, mieux le moteur comprend les contenus du site et donc mieux il le positionnera sur les mots-cls. Le rfrenceur doit faire comprendre au moteur le contenu de chaque page. Il dispose de nombreuses techniques complmentaires pour y arriver. Lune delle consiste imposer aux bots de Google un parcours strictement hirarchis entre page daccueil, ttes de rubriques, sous-rubriques, pages lles. Pour faciliter cette hirarchie, chaque page traite dun sujet prcis. La page est optimise pour quelques mots-cls que lon trouve dans lURL de cette page ainsi que dans les diffrents critres la composant : title de page meta, balise Hn, etc. Nous y reviendrons plus loin. En imposant une telle vision du site Google, tout en laissant dautres principes de navigation en service sur le site mais invisibles pour Google, le codeur amliore fortement le positionnement des landing pages de son site dans lindex de Google. De mme, si pour des raisons de lisibilit pour les humains, un rdacteur dcide de faire des jeux de mots dans un titre ou de mlanger des thmes dans une page, il sera efficace de limiter la lecture de Google sur ces lments, voire de la lui interdire.

Le rfrencement : un savoir-faire difficile acqurir


Google est une entreprise amricaine donnant trs peu dindications sur son fonctionnement technique. Il suffit de lire les interviews de responsables techniques de Google pour sen convaincre. Voici quelques exemples : partir de quel seuil le moteur ragira-t-il ainsi ? Pas de rponse. Quels sont les critres de classement dans lindex ? Vague rponse : contentez-vous de mettre votre contenu en valeur. Les techniques de classement dans lindex de Google sont secrtes an de laisser chapper le moins de savoir-faire possible vers les concurrents et les rfrenceurs :
j

Pour protger son avance, Google ne publie pas de relles informations sur le fonctionnement de ses algorithmes. Les rfrenceurs sont donc obligs de chercher

28

Des concepts et termes techniques matriser

par eux-mmes, ce qui cote cher. Cela incite chacun dentre eux protger la partie "pointue" de son savoir-faire. Do une pnurie dinformations de qualit pour rfrencer et positionner efficacement son site. Les internautes ont fait Google. Seuls ces derniers pourront le dfaire. Moins les concurrents possdent dinformations, moins les rfrenceurs peuvent tenter de polluer lindex de Google en imposant leurs pages au dtriment de pages concurrentes. Il est alors plus facile pour Google de rester en tte et mme daccrotre son avance. Tant que lusage de Google est fortement rpandu parmi les internautes du monde entier, les entreprises souhaitant tre vues sur le Net devront passer par Google, via ses liens sponsoriss AdWords ou/et le rfrencement naturel. Cela reprsente une norme sources de revenus. Google va donc soigneusement protger son succs auprs des internautes en luttant contre toute pollution de son index. La masse des utilisateurs dliss par la qualit des rponses de Google tablit ce moteur comme leader sur le march de la recherche sur le Net. Il nest pas question pour Google de laisser des actions de rfrencement trop agressives polluer son index et compromettre, terme, le succs de son business model.

Le codeur doit comprendre le savoir-faire dun rfrenceur an de mieux apprhender les exigences du rfrencement et leurs impacts sur ses codes PHP, ASP, .NET, etc.

Codage web2.0 et rseaux sociaux


Lusage rseau social (YouTube, Facebook et des dizaines dautres) intresse fortement Google. Cet usage rseau social nest pas une mode mais une vraie rvolution des relations sociales, du fonctionnement des communauts, dans le monde. Elle en est ses dbuts. Google et quelques autres lont bien compris. Rseau social et mobilit vont profondment remodeler la socit dans les prochaines annes. Les rseaux sociaux regorgent de backlinks dposs par des internautes : mes sites prfrs, partage de favoris, etc. Google exploite les backlinks dposs dans des rseaux sociaux accessibles ses bots. Faciliter la pose de backlinks par des internautes abonns des rseaux sociaux est techniquement ais raliser.

29

Optimiser des pages pour Google

c Fig. 1.6 : Page Rank sur digg.com et backlinks sur les pages du site

Une autre approche web2.0 consiste laisser les internautes interagir avec les pages de votre site. Plus il y a dchanges autour de votre page ajout de textes dans le site lui-mme, ractions autour de vos articles , plus le volume dintgration des textes dans la page augmente, "lestant" la page en textes et donc amliorant son positionnement.
c Fig. 1.7 : Sur 750g.com, un commentaire qui renforce le rfrencement de la page : mots clefs et cohrence sont prsents.

30

Des concepts et termes techniques matriser

Les bots de Google cartographient chaque page. Ils peuvent tracer la frquence de mise jour et ainsi, au vu de frquentes mises jour via lajout de posts et autres commentaires, en dduire une signature type dune page web 2.0. Il est indiscutable, tests lappui, que ses algorithmes en tiennent compte et quils favorisent le positionnement de ces pages web 2.0 au dtriment de pages web 1.0.
Installer des fonctions web2.0
Si vos pages ont un contenu justiant des changes avec les internautes, protez-en. Toute page ayant du succs en interactivit avec les internautes se voit octroyer des avantages dus aux backlinks ainsi gnrs et au texte ajout la page : commentaires, avis, notes, etc. Google favorise les pages web2.0 actives et utilises dans son index.

Un codeur pourra dvelopper puis installer des modules PHP/MySQL destins :


j j

linteractivit de toute page avec des internautes : avis, vote, notes, questions/ rponses, etc. ; la modration des participations crites a priori (validation avant tout affichage) ou a posteriori (retrait ou amendement de la participation crite si elle ne convient pas au webmestre).

Principes du rfrencement et du positionnement naturel


Le rfrencement naturel dun site Internet
Ce sont les actions techniques et rdactionnelles destines optimiser les pages du site pour tenter de les faire afficher dans les SERP dun moteur sur un ou des mots-cls prcis. Ces actions techniques sont localises dans les pages du site et jamais en dehors.

Optimiser une page HTML signie mettre en uvre des techniques Internet et rdactionnelles sur une page pour faciliter la comprhension des contenus de cette page par le moteur de recherche. Lobjectif est de le pousser prendre en compte les mots-cls dont le site estime avoir besoin en priorit sur cette page. Quand on dnit que telle page sera la landing page, la page datterrissage sur telle expression cl, il faut tout mettre en uvre pour pousser en avant cette page vers le top5 dans les SERP de Google :
j

Optimisation de la page, objet du prsent chapitre.

31

Optimiser des pages pour Google

Optimisation des autres pages pour mettre celle-ci en avant via la technique des nuages de liens. Le principe de cette approche est dcrit un peu plus loin dans le chapitre consacr aux backlinks. Netlinking. Cet aspect web marketing est dtaill dans un autre livre chez MicroApplication : Le Guide complet du rfrencement sur Google. Dans le chapitre consacr aux backlinks du prsent ouvrage, nous effleurerons le sujet an de nous consacrer laspect codage destin faciliter le netlinking et sa variante interne au site, les nuages de liens (tags clouds)
Positionnement dun site Internet

Ce sont les actions extrieures au site lui-mme qui vont hisser les pages dun site dont le rfrencement est correct, vers les premires positions dans une page de rsultats de moteur (une SERP) sur les mots-cls voulus par le webmestre ou le traffic manager.

Sur chaque page de tout site web accessible Google, diffrents critres, que nous dtaillerons plus loin, sont valus par Google. Ils lui permettent de trier dans son index les millions de pages ayant un mot-cl en commun. Ensuite, Google value les backlinks pointant vers chaque page dun site. Cette valuation nalise pour quelques heures le classement dans lindex. Ce classement est rgulirement recalcul. Sauf pour lapplications de pnalits, le fonctionnement de ces algorithmes dvaluation lisse les montes ou descentes de pages au sein de lindex. Russir un positionnement des landing pages de son site dans les SERP de Google exige de raliser un travail squentiel :
j j j

un rfrencement de qualit, cest--dire les travaux doptimisation des pages du site respectant une cohrence vis--vis des mots-cls utiliss ; puis un travail de netlinking interne (nuages de liens) ; enn un netlinking externe vers les landing pages puis un netlinking vers dautres pages.

Contenu et mots-cls
Pour avoir un site positionn en bonne place, il faut que ce dernier dispose de rels contenus : textes, visuels, vido, etc. Ces derniers crent de la valeur ajoute pour linternaute. Les volumes, en nombre de mots par page et en nombre de pages, sont importants. Une fois optimiss, ces pages et ces textes inueront fortement sur le rfrencement du site et sur son positionnement dans lindex du moteur.

32

Des concepts et termes techniques matriser

Le web marketing aura sa charge de slectionner les mots-cls et la rpartition de ceux-ci sur les pages du site.
Clics dans les SERP et positionnement mobile
Le taux de clics sur les pages du site a une inuence sur le positionnement. Plus il y a dinternautes saisissant une requte avec lexpression cl gite questre Normandie, qui cliquent vers une mme landing page, plus cette landing page se hissera vers de meilleures positions sur ces mots-cls composant la requte. Les internautes votent via Google pour une page associe des mots-cls.

Accessibilit des mots-cls


Laccessibilit se dcompose en deux types :
j

Technique. Le robot doit pouvoir accder la page et son contenu. En effet, de nombreux sites ont des JavaScripts et autres gadgets techniques qui bloquent plus ou moins les bots de Google. Smantique. Rendre accessible au moteur les mots et expressions cls retenus lors de ltape prcdente revient optimiser les pages du site. Pour cela, le travail est dcoup en plusieurs tapes : - rpartir les mots-cls et les combinaisons de mots et expressions cls sur les pages du site ; - considrer un maximum de 5 mots-cls par page (nous verrons le pourquoi de cette limitation plus loin) ; - optimiser en consquence chaque page du site autour des mots-cls qui lui sont affects.

Sauf erreur de votre part, le moteur prendra en compte vos 3 5 mots-cls stratgiques pour chaque page. Laccessibilit smantique a ainsi pour objectif dorienter le choix de Google sur vos mots-cls pour chacune des pages de votre site web, les landing pages comme les pages en charge de pousser les landing pages en avant.

Backlinks et nuages de liens


Un site correctement rfrenc pourra recevoir des actions de positionnement pour disposer de pages visibles dans les deux premires SERP sur les mots-cls. Le netlinking (linkbuilding) est une des deux seules actions permettant davoir un contrle sur le positionnement des pages. Il peut tre interne (gestion des liens entre pages du mme site) ou externe (les liens venant de pages externes au site). On pourra jouer sur plusieurs caractristiques :

33

Optimiser des pages pour Google

j j j

la qualit de chaque lien : la qualit de lenvironnement de dpart, le texte du libell du lien et de la page vise par lURL du lien ; le volume des backlinks ; les pages vises : on pourra favoriser certaines pages plutt que dautres et ainsi inuencer le positionnement de certaines pages au dtriment dautres pages ; cest un des intrts de disposer de nombreuses pages hirarchises via des menus.

Une stratgie de rfrencement


Le marketing dcide dune stratgie de rfrencement : mots-cls, pages datterrissage, etc. Puis au l de lacquisition de statistiques, de retours sur lutilisation du site, des changements sont apports cette stratgie :
j j j

de nouveaux mots ou expressions cls sont prendre en compte ; de nouvelles pages sont ajoutes, de nouvelles rubriques sont cres ; de nouvelles landing pages sont dnies pour les nouveaux mots et expressions cls.

Il est du ressort du codeur de fournir un site pouvant aisment mettre jour sa stratgie de mots-cls et de pages datterrissage. Nous tudierons cela plus loin.

1.2 La formule magique du rfrencement


Nous avons vu plusieurs lments distincts qui comptent dans le rfrencement. Pour faciliter la comprhension de ces mcanismes complmentaires mais indissociables, voici une formule qui devrait aider mieux les apprhender. An de faciliter la comprhension de la formule, nous utiliserons lexemple dune page P positionner sur lexpression cl "formation web". Le positionnement dune page HTML sur une expression cl est fonction de :
j j

La prsence dans les diffrents critres de cette page de lexpression cl : title de page, Hn, texte, balises ALT et TITLE dimage, ancres (dpart de liens). La densit de cette prsence pour chaque type de critre. Exemple : on trouve 4 fois lexpression formation web en H1 sur un total de 40 mots. La densit est de 2 fois 4/20, 20 % pour chaque mot-cl composant notre expressions cl formation web. Plus la densit est leve, mieux cest, jusqu atteindre un seuil limite. partir de ce seuil, on risque de passer du cot du spamdexing.

34

Tricher ou non en rfrencement

Du volume de critres de poids. Une expression cl prsente uniquement en H1 pse davantage pour un bon positionnement que cette mme expression cl prsente uniquement en H2. La prsence du mme mot-cl, en H1 et en H2, sadditionne et elle octroie un bonus de cohrence notre page. Du Page rank de la page. Il fait office de levier sur les mots-cls dposs dans les ancres. Un mot-cl en ancre de lien, elle-mme dans un h1, psera davantage pour le positionnement dans une page PR3 que la mme page en PR1. <h1> <a
href="formationwebmarketing.html"> Formations en web marketing</a></h1>

j j

cumule le levier du H1, de lancre sur les mots-cls formation/web/marketing multipli par le Page rank pour notre page et pour la page vise par lURL du lien. Ces trois mots-cls se partagent la pousse. Du volume de backlinks pointant vers notre page et ayant notre expression cl dans le libell du lien. De la qualit de la page de dpart des backlinks abords prcdemment. La pousse transfre par chaque lien vers les bonnes positions dans lindex sera fonction du Page rank de la page de dpart, du volume de mots dans chaque libell, de la cohrence de ce mot entre la page de dpart et la page darrive. Si formation est prsent dans diffrents critres de la page de dpart et de la page darrive, la cohrence ainsi russie pousse notre page davantage vers les bonnes positions dans lindex de Google. Moins la cohrence est bonne, moins il y a de pousse. partir dun certain seuil, la pousse globale est tout simplement ramene 0.

1.3 Tricher ou non en rfrencement


Il y a peu de bonnes positions dans les SERP de Google : TOP5, page 1, page 2 ou page 3, face des centaines de milliers ou des millions de pages candidates aux mmes expressions cls que votre site.
Spamdexing
Toutes les actions polluant lindex de Google constituent des attaques contre la qualit des SERP du moteur. Elles sont considres comme du spamdexing. Nous avons rparti en diffrents groupes les actions de spamdexing capables de polluer lindex de Google.

Google doit sassurer dun index propre pour conserver son public dinternautes. Cest une question de survie et de revenus pour Google. Le moteur a dict de multiples niveaux de pnalits contre les actions de spamdexing pour protger ses intrts.

35

Optimiser des pages pour Google

Mais avoir absolument un bon positionnement peut tre une question de survie ou de rentabilit pour lentreprise via son site web. Lentreprise aura tendance lancer des campagnes de netlinking. Celles-ci incluent une forme ou une autre de paidlinks prohibs par Google (chaque paidlink oue lalgorithme de Page rank et lui prend des revenus issus de AdWords).
Comprendre les enjeux du spamdexing
Cest au responsable du projet ou de lentreprise darbitrer et dassumer les dcisions en toute connaissance de cause pour lemploi ou non de techniques de spamdexing.

Spamdexing : les diffrentes techniques de triche


Nous avons regroup les techniques de triche (le spamdexing) en diffrentes catgories pour en favoriser la comprhension. Un codeur maladroit peut produire son insu du spamdexing et ainsi prcipiter le site web dans des pnalits Google plus ou moins fortes. Le codeur doit comprendre les diffrentes techniques de spamdexing pour viter den coder son insu.

Spamdexing sur la page


Il regroupe les techniques de triche et erreurs humaines portant sur le contenu dune page accessible aussi bien par un internaute humain que par un bot de Google. Quelques exemples : crire une partie des textes dune page en police de couleur blanche sur un fond blanc, dissimuler des textes dans la page au moyen de faux calques DHTML, multiplier les titres de niveau 1 (textes entre des balises h1), etc. constituent des actions de spamdexing au niveau de la page. Le principe consiste faire prendre en compte, dans une page par le moteur, des textes ou une mise en page invisibles aux internautes. Le bot prend en compte ces textes cachs et les mots signicatifs qui les composent ainsi que la mise en page avec loptimisation sous-jacente. Le rfrencement de la page en est donc amlior jusqu la dcouverte plus ou moins rapide des textes cachs par les algorithmes anti-fraude de Google. Cette technique de triche ne prsente aucun intrt. On peut faire aussi performant sans tricher, donc sans risque.

36

Tricher ou non en rfrencement

Un codage maladroit peut gnrer du spamdexing


Par exemple, un site change son affichage et sa charte graphique en fonction des quatre saisons : t, hiver, automne, printemps. Un test oubli, un correctif CSS tardif peuvent entraner la ralisation accidentelle dun texte dans une couleur de police identique celle du fond. Cette forme de spamdexing est pnalise par Google.

Le cloaking
Le cloaking
Cette technique porte sur des astuces en programmation aboutissant rendre invisible des internautes humains une page visible uniquement par un bot de moteur, et rendre invisible au bot une page destine exclusivement des humains. Les deux pages ont exactement la mme URL. Ce type de triche peut tre facilement vent par Google. Les gains obtenus par la technique de cloaking sont faibles par rapport un site correctement optimis sans triche. Son intrt est nul. On peut trouver dautres approches pour viter le cloaking.

Exemple : un site dautomobiles de luxe allemandes utilise des descriptions de leurs produits avec des mots qui nont aucun rapport avec la relle fonction de lobjet : palace roulant, srnit, ambiance feutre et autres qualicatifs quaucun internaute ne saisit dans une requte concernant le monde automobile. Ce site de voitures luxueuses dcide de la ncessit de disposer de pages et contenus pour les internautes dun ct, et de ces mmes pages (mme URL) avec des contenus optimiss en mots-cls "utiles" pour Google. Principe de fonctionnement : un JavaScript ou un script PHP sur chaque page "bricole" dtecte la provenance de linternaute. Si le visiteur vient dune adresse IP appartenant Google, Yahoo, ou Microsoft, on lui prsente une page optimise "moteur" ; autrement, la mme URL correspond un contenu totalement diffrent orient vers un internaute humain sduire. Il existe de multiples variantes de ces scripts, toutes orientes dans la prsentation de contenus optimiss visibles exclusivement par les bots des moteurs pendant que les mmes URL prsentent dautres contenus aux humains.

37

Optimiser des pages pour Google

Une autre formulation du cloaking


Une mme URL prsente au mme moment deux contenus totalement diffrents selon que le visiteur est un bot ou un internaute.

Le moteur indexe la page optimise, car il a t abus dans un premier temps. Quand linternaute clique sur un lien menant cette page depuis un SERP, il arrive sur un tout autre contenu de cette mme page (il a t dtect comme humain par le script). Une erreur humaine en codage du site peut aboutir au mme rsultat. Un bogue ou un test sur une identication, un cookie par exemple, mne une page ou une autre (mais avec la mme URL). Quelquefois, le site affiche des textes diffrents sur une mme page selon la situation rencontre. Pour Google, cela ressemble une URL unique ayant au moins deux contenus plus ou moins diffrents au mme moment selon le prol de linternaute : un clic ici donne toujours cela, mais ce mme clic avec une conguration de navigateur ou une provenance diffrente donne, sur la mme URL, un contenu diffrent. Si les contenus sont totalement diffrents, cela peut occasionner une interprtation daction polluante, de spamdexing, contre lindex du moteur et une raction de celui-ci sous forme de sanction. Si les carts de contenu sont faibles, Google ignorera le problme. Au codeur de faire en sorte dviter ces situations.
Un moteur de publication
Pour viter les erreurs, nous recommandons dutiliser autant que faire se peut un moteur de publication qui, une fois au point, permet de publier sans risque derreur de programmation des contenus sans duplicate content interne et autres erreurs susceptible de pnaliser le rfrencement du site sur Google. Nous verrons le code source dune version simple dun tel logiciel dans ce livre. Il servira publier les informations de notre site web exemple rfrencer automatiquement.

Duplicate content
Des contenus identiques existant sur diffrentes URL sont du duplicate content.
Une URL, une page unique en contenu
Selon les rgles des moteurs, une page unique (une URL unique) doit correspondre un contenu unique an de ne pas polluer lindex du moteur avec de multiples pages contenus identiques aux URL diffrentes.

38

Tricher ou non en rfrencement

En fait, cette rgle de Google est plus souple ; il y a de nombreux cas o un petit contenu identique est publi par de nombreuses pages de sites diffrents : synopsis dun lm, communiqus de presse, descriptions de produits vendus par de nombreux sites, nouvelles dactualit, etc. Nanmoins, passs certains seuils en nombre de caractres et quelques autres critres que nous naborderons pas encore, Google peut juger que deux pages possdent des contenus trop proches. Il sanctionne une des deux pages en la dsindexant, partiellement ou totalement selon le volume de duplicate content. Le duplicate content est une erreur trs courante, quil est trs facile de provoquer accidentellement manuellement ou via des erreurs de codage :
j

Un copier-coller maladroit. Exemple : depuis la page du site franais, le webmestre copie colle des donnes vers la page correspondante dans le site belge francophone. Une page trop lgre en contenu unique et parseme de textes/menus/images rpts sur dautres pages du mme site. Par exemple, la page Nos coordonnes contient tous les menus du site et juste une poignes de caractres destins ladresse postale et au numro de tlphone. Une telle page sera probablement value comme ayant trop de duplicate content interne au site ; elle sera donc dsindexe. De multiples sites publient la mme information, vendent le mme produit avec le mme descriptif, etc. Une faute en hbergement : des substitutions alatoires du nom de domaine par un nom gnrique de lhbergeur qui font correspondre pour Google plusieurs URL/ pages ayant exactement le mme contenu. Une erreur de codage en URL rewriting faisant correspondre plusieurs URL distinctes vers la mme page physique. Un bogue dans la gestion informatique des contenus aboutissant avoir des contenus identiques disperss sur plusieurs pages diffrentes. Vos contenus ont t dupliqus par un autre site, volontairement ou non. Des cumuls de plusieurs petites erreurs aboutissent des contenus identiques partiels dans des pages trop lgres en volume de contenu.

j j

Spam de liens, les paidlinks


Cela porte sur "les liens non naturels versus les liens naturels". Cest la technique qui provoque le plus de polmiques pour de multiples raisons.

39

Optimiser des pages pour Google

On vient de voir que les techniques de triche ne possdent aucune efficacit. Elles sont aises dtecter. Les backlinks sont primordiaux et uniques pour obtenir un bon positionnement. Il est tentant dagir via du spam de liens pour obtenir des backlinks. Les rgles distinguant les liens naturels des liens non naturels dictes par Google sont oues, potentiellement contraires la lgislation scale des pays occidentaux dans certaines interprtations, et difficiles bien contrler par le moteur. Cest donc la porte ouverte pour tout site web investir dans de nombreuses formes de campagnes de backlinks (on appelle cela netlinking). Les pages capables dinciter un internaute poser un lien vers elles appartiennent au monde du linkbaiten, technique non rprouve consistant disposer dune qualit de contenu incitant les internautes en parler et poser des liens depuis leurs blogs, posts de forum, etc. Le paidlink, comme lindique son nom, consiste "payer" le poseur de lien et le site hbergeur dudit lien pour avoir un lien en dur. Les paid links, technique de web marketing en positionnement nayant rien voir avec la programmation, sont abords en dtail dans le Guide complet du rfrencement sur Google, paru chez MicroApplication.

1.4 Rsum de ce chapitre


Nous avons abord dans ce chapitre les termes techniques, concepts et autres informations ncessaires pour comprendre les contraintes du rfrencement et du positionnement vis--vis dun site et de sa programmation. De nombreuses tches rptitives et fastidieuses comme optimiser page HTML par page HTML, et une qualit sans dfauts de ces tches caractrisent le travail de base. Les codeurs percevront la ncessit :
j j j j

dautomatiser les URL ; dviter de gnrer accidentellement du spamdexing ; dviter de publier ou afficher des informations perturbant la logique de Google ; de faciliter un minimum le travail du rfrenceur et du web marketing via un back office simple leur permettant dadministrer les mots-cls du site.

40

Rsum de ce chapitre

Deux autres aspects ont normalement attir lattention du codeur :


j j

utiliser la programmation pour des fonctions web2.0 pour amliorer rfrencement et positionnement ; automatiser les backlinks internes : les tags clouds (nuages de liens).

Ces tches attendant le codeur sont rapides dcrire, mais vous aider leurs mises en place demandera quelques chapitres dans ce livre.

41

2
2.1 Introduction .............................................. 2.2 Codes sources site web exemple du livre ......... 2.3 Coder une optimisation de page pour Google ..... 2.4 Donnes, mots-cls, rfrencement et mthodologie ......................................... 2.5 Rfrencement, positionnement naturel : principes .. 2.6 Publication de pages dynamiques .................... 2.7 Rsum ................................................... 44 44 45 47 54 56 98

Automatiser le rfrencement avec PHP et MySQL


D
ans le chapitre prcdent, vous avez acquis un premier niveau en notions de rfrencement sur Google. Lobjectif des chapitres venir, incluant celui-ci, est de vous exposer les algorithmes et des codes sources lis loptimisation de chaque page HTML puis la coordination de ces optimisations individuelles pour mettre en place une stratgie globale de rfrencement et de positionnement dans lindex du moteur de recherche Google.

Automatiser le rfrencement avec PHP et MySQL

2.1 Introduction
Comme pour la construction dune maison, il va falloir commencer par les fondations pour construire le rfrencement naturel dun site web. Les fondations dun site pouvant tre rfrenc sur Google sans aucun frein consiste en un logiciel de publication de pages avec lequel il sera possible de tout faire. En effet, les Joomla et autres logiciels CMS (Content, Management System), sont des logiciels permettant dorganiser puis de publier des pages. Ils prsentent quelques dfauts que nous voulons viter dans notre propre logiciel de publication dont :
j

La libert pour le codeur ou le webmestre doptimiser une page ou ses pages sa totale convenance. On ne fait pas ce que lon veut avec un logiciel de CMS. Par exemple, Joomla 1.5 possde encore quelques solides dfauts nuisibles un rfrencement de trs bonne qualit. La simplicit de mise en uvre de ces optimisations. Il faut un laps de temps non ngligeable pour matriser Joomla 1.5 ou un autre logiciel de CMS. Ne pas pratiquer revient oublier. Les cots de rfrencement sen trouvent augments dautant. La rapidit pour ajouter, modier des contenus. Joomla 1.5 est lent. Le temps pass attendre, la multiplicit des onglets cliquer, ralentissent le rfrenceur. Cela augmente donc le cot du rfrencement.

Le prsent chapitre commence par exposer et expliquer les codes sources dun logiciel simple de publication de pages HTML.

2.2 Codes sources site web exemple du livre


Tout au long de ce livre, nous allons illustrer son contenu avec des codes sources issus dun exemple de site pouvant tre rfrenc sur Google. Ce logiciel de publication est crit en PHP, il utilise des donnes gres sous MySQL et gnre du XHTML, CSS2. Vous pourrez reprendre les codes sources de cet ouvrage et les dcliner vers vos besoins propres.
Un logiciel de publication adapt
La problmatique de base dun site web est schmatiquement toujours la mme : lister des rsums et permettre, dun clic, de zoomer sur un article dont le rsum a intress linternaute. Le logiciel de publication que nous allons regarder sappuie sur ce principe. Vous pourrez donc ladapter de nombreux sujets et le complter avec vos besoins fonctionnels.

44

Coder une optimisation de page pour Google

Ce site web exemple prsente aux internautes des articles consacrs la cration dentreprises et des ides, des conseils destins aux futurs chefs dentreprise. Le propos de ce site web exemple rfrencer et positionner est donc de publier ce type dinformations. Pour cela, il sappuie sur notre "moteur" de publication trs simple type Drill Down :
j j j j

Affichage dune liste de rsultats, des rsums darticles, sur une recherche par clic, par exemple tous les articles sur la fiscalit dentreprise. Un clic sur un de ces articles affichs lance la page publiant la totalit de larticle. Un article peut appartenir plusieurs thmes, rubriques, ce qui va poser des problmes face Google. On peut afficher les articles propres une rgion de France ou toute la France. L aussi, nous rencontrerons des problmes face Google.

Dans cet exemple, on rencontre donc des cas qui peuvent perturber le rfrencement si on ne code pas en prenant en compte les exigences des moteurs de recherche. En clair, malgr son apparente simplicit, plusieurs piges classiques dans lesquels nombres de codeurs tombent, seront rsoudre sur ce site exemple an de russir son rfrencement puis son positionnement.
Site exemple
Ce site web exemple est destin exclusivement tudier le codage de site rfrencer En aucun cas, les sources de ce site ne sont destines enseigner la programmation en PHP/MySQL. Il existe des auteurs spcialiss sur le sujet. De mme, dans cet exemple, on nutilisera pas de Framework PHP qui aurait alourdi lexemple. Nous ferons simple pour favoriser la pdagogie de nos objectifs : apprendre automatiser au maximum un rfrencement de qualit.

2.3 Coder une optimisation de page pour Google


Google analyse diffrents critres dans une page :
j j

j j j

son title ; le meta description (ce critre nest pas utilis pour le calcul du positionnement daprs une interview de Matt Cutts, mais ce critre est cependant utilis pour un affichage en snippet ). ; les textes entre balises Hn, de h1 h8 ; les mises en exergue ; les textes des ancres de liens ;

45

Automatiser le rfrencement avec PHP et MySQL

j j j j j j

les libells des backlinks entrant vers la page ; les textes en balises ALT et TITLE de visuel ; les textes ; les mots composant lURL ; la densit dun mot prcis face aux autres mots-cls ; les libells des ancres de liens quittant la page vers une autre page.

Un mot-cl stratgique se doit dapparatre dans tous ces critres, imprativement. Peut on raliser ce travail manuellement ? Oui, mais nous laissons le lecteur imaginer ce que cela lui coterait en temps sur un volume de quelques centaines ou mme quelques dizaines de pages. Non seulement cest une tche chronophage et fastidieuse, mais en plus, avec la fatigue, les rfrenceurs manuels font des erreurs capables de diminuer le trac. Ce qui est, bien sr, totalement contraire nos objectifs.

c Fig. 2.1 : Toute page dsindexe dtruit le Page Rank qui lui arrive et ne transmet aucun PR vers les autres pages.

46

Donnes, mots-cls, rfrencement et mthodologie

La premire ide qui vient lesprit en voyant un tel volume de travail est la suivante : "Optimisons juste quelques pages". En effet, cest une premire piste. Mais elle prsente de gros inconvnients. Chaque page peut participer de manire cohrente et synchrone au positionnement des autres pages. En clair, plus il y a de pages rfrences dans un site, plus il est facile de positionner les landing pages. Nous verrons dans un autre chapitre, celui ddi aux backlinks, les raisons techniques.
Inuence sur le positionnement
Le volume de pages HTML correctement rfrences inue sur le positionnement Plus il y a de pages correctement rfrences dans un site, plus il est facile de positionner les landing pages sur leurs mots-cls respectifs dans les SERP de Google. On a donc tout intrt automatiser par des scripts PHP/MySQL le rfrencement de son site an de rfrencer correctement toutes les pages du site.

Il y a de nombreuses informations manipuler. Une base de donnes est ncessaire pour administrer ces donnes et utiliser les bonnes donnes sur la bonne page, au bon moment.

2.4 Donnes, mots-cls, rfrencement et mthodologie


Donnes et mots-cls se traitent diffremment
Il est impratif de xer une rgle, une mthodologie sur la gestion des mots-cls au sein des structures de pages. Plusieurs approches existent. En voici deux simples parmi de multiples possibilits :
j

Tous les mots-cls stratgiques de la page sont dans le TITLE de page et les autres mots-cls apparaissent dans les autres critres de la page : Hn, ALT de visuels etc. Partant de l, la logique code en PHP/MySQL exploitera cette rgle. Dans les tables dcrivant les donnes, on prvoit des champs supplmentaires : expression cl n1, expression cl n2, etc. La logique code en PHP exploitera cette rgle pour automatiser le rfrencement de chaque page dynamique du site.

Une rgle xant o sont les mots-cls dune page dynamique dans une table ou une structure est ncessaire. En effet, le codeur va implmenter via des scripts PHP une logique allant chercher des informations stratgiques au rfrencement dans la base de donnes an de les afficher dans les endroits adquats et efficaces de la page afficher automatiquement.

47

Automatiser le rfrencement avec PHP et MySQL

Les personnes en charge de rdiger, dimporter les donnes en tables MySQL devront respecter cette rgle, autrement le rfrencement sera rat, voire contreproductif. Nous utiliserons les 2 approches simultanment dans le site an de les illustrer. Il appartiendra ensuite chaque lecteur de choisir ou dinventer la mthode qui convient son site et ses besoins propres.

La structure de page en MySQL


Pour automatiser loptimisation des pages HTML, il va falloir les construire la vole depuis une base de donnes. La structure de chaque gabarit de page doit donc tre cod en XHTML/CSS mais ce codage doit tre transpos en objet PHP5/table MySQL. Commenons simplement. Une page en charge dafficher un article est compose :
j j j j j j j

Dun title de page. Dun meta description. Dun titre H1. Dun petit paragraphe que nous appellerons chapeau. Il sera en charge dafficher un rsum de larticle, un chapeau donc dans le jargon des rdacteurs. Dun grand paragraphe que nous appellerons texte principal. Dune image dote dune balise ALT et dune balise TITLE. Dun gabarit gnral de prsentation : Logo en haut, bandeau graphique de prsentation, dnition des balises de mise en page en feuille de style <p>, <h1>, etc.

On va aller chercher les informations sur les donnes afficher dans des tables MySQL.

Table article
Voici la structure de la table article de notre site exemple rfrencer telle que exporte depuis MySQL :
--- Structure de la table articles -CREATE TABLE articles ( id int(5) NOT NULL auto_increment, titre varchar(255) NOT NULL, url varchar(255) NOT NULL,

48

Donnes, mots-cls, rfrencement et mthodologie

chapeau text NOT NULL, texte text NOT NULL, date-si date NOT NULL, date-online date NOT NULL, date-obsolete date NOT NULL, contributeur int(5) NOT NULL default 1, source varchar(255) NOT NULL, poids int(11) NOT NULL default 0, region int(5) NOT NULL default 1, title varchar(255) default NULL COMMENT title de la page article zoom, description varchar(255) default NULL COMMENT meta description page zoom, expression_clef varchar(120) NOT NULL, PRIMARY KEY (id), KEY expression_clef (expression_clef) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=409;

Nous y retrouvons nos champs importants et quelques autres utiles pour la logique du site exemple (poids, date-si, etc.)
j j

id : la cl unique de chaque enregistrement de cette table. Classique. titre : le titre de larticle (ne pas confondre avec le title de la page). Il est destin tre affich entre balises H1 si ce titre contient des mots-cls. Titre est destin un

affichage pour les internautes. Il doit tre en ligne, cohrent avec le chapeau et le texte du mme article. url : le nom de cette article, compos de mots-cls imprativement et avec une rgle dcriture pour le contenu du champ : pas de majuscule, remplacement du caractre espace par le caractre tiret (le de la touche 6), pas de caractre accentu. On utilise uniquement les caractres admis dans les URL. Deux possibilits pour obtenir le respect de cette rgle : on fait attention lors de la saisie ou un script parcourt en batch cette colonne et convertit en bons caractres tout ce qui sort de cette rgle. PHP offre de multiples fonctions permettant de manipuler des strings an de les rendre compatibles avec Internet : passer de upper lower case, liminer tout slash antislash, quote et guillemet, etc. Voir les manuels PHP.
URL doit tre unique. Tout caractre non admis conduira cette page en erreur 404. chapeau : rsum de texte. Le texte du chapeau est destin tre affich dans les

pages prsentant des rsums. Ainsi on vite le duplicate content avec la page affichant le texte complet. Si le chapeau tait juste le dbut du texte, on aurait des duplicate contents multiples et prjudiciables au positionnement du site. texte : le texte complet de larticle.

49

Automatiser le rfrencement avec PHP et MySQL

datexxx : les diffrentes dates ; importation dans le SI (systme dinformations),

j j

j j

mise en ligne, date de retrait automatique. Ces champs sont prsents pour la logique mtier de ce site exemple. Ils noffrent aucun intrt en rfrencement. contributeur, source, poids : Ces champs sont prsents pour la logique mtier de ce site exemple. region : un article peut tre propre une rgion de France ou toute la France. A priori, cela ressemble un champ prsent pour la logique mtier. Oui, mais son existence va poser des problmes de rfrencement quil nous faudra rsoudre. title : title de cette page. Rappel : il doit contenir des mots-cls. La logique de rfrencement va sappuyer sur ce champ. description : meta description de cette page. Un automate peut dupliquer le contenu du title dans ce champ si vous ne disposez pas du temps et des ressources pour le grer dans un premier temps. expression_clef : contient une expression compose de un quelques mots-cls. Cette expression cl doit tre la plus stratgique de cette page. Lors de la conception de la mise en page code en PHP, cette donne pourra servir plusieurs reprises pour optimiser la page face Google.

Table rubrique
La table rubrique liste les rubriques du site :
--- Structure de la table rubrique -CREATE TABLE rubrique ( id int(5) NOT NULL, nom varchar(255) NOT NULL, url varchar(255) NOT NULL, title varchar(255) default NULL COMMENT title de la page article.php, description varchar(255) default NULL COMMENT meta description de la page article.php, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
j j

id : la cl unique de chaque enregistrement de cette table. Classique. nom : le nom de la rubrique. Ce nom pourrait servir gnrer le menu de navigation.

Dans notre exemple, nous nous contenterons dun menu cod main et insr dans un script PHP. Lobjectif de ce livre nest pas un cours sur loptimisation du codage PHP dun site web et sa maintenance de contenu.

50

Donnes, mots-cls, rfrencement et mthodologie

j j

url : le nom de cette rubrique avec une rgle dcriture pour le contenu du champ : pas de majuscule, remplacement du caractre espace par le caractre tiret (le de la touche 6), pas de caractre accentu. On utilise uniquement les caractres admis dans les URL. Deux possibilits pour obtenir le respect de cette rgle : on fait attention lors de la saisie ou un script parcourt en batch cette colonne et convertit en bons caractres tout ce qui sort de cette rgle. PHP offre de multiples fonctions permettant de manipuler des strings an de les rendre compatibles avec Internet : passer de upper lower case, liminer tout slash, antislash, quote et guillemet, etc. Voir les manuels PHP. URL doit tre unique. Tout caractre non admis entranera une erreur 404 si on utilise ce champ. title : dcrit trs brivement les contenus types des enregistrements de cette table. Ce contenu est utilisable pour construire le title dune page listant des articles dune mme rubrique. description : description plus longue des contenus types des enregistrements de cette table. Ce contenu est utilisable pour construire une meta description dune page listant des articles dune mme rubrique.

Table article_rubrique

c Fig. 2.2 : PhpMyAdmin de la table articles

Un article peut appartenir plusieurs rubriques. La table article_rubrique liste les couples (id article , id rubrique). Cela va nous entraner dans des duplicate contents si on ne fait pas attention lors du codage :

51

Automatiser le rfrencement avec PHP et MySQL

--- Structure de la table article_rubrique -CREATE TABLE article_rubrique ( id_article int(5) NOT NULL, id_rubrique int(5) NOT NULL, primaire tinyint(4) NOT NULL default 0 COMMENT UN : rubrique principale, PRIMARY KEY (id_article,id_rubrique) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
j j j

id_article : lidentiant de larticle. id_rubrique : lidentiant de la rubrique. Le mme article peut appartenir autant

de rubriques que ncessaire.


primaire : ce champ par dfaut 0 indique qui est la rubrique principale dont

dpend un article. Il existe une seule rubrique primaire par article. Ce champ sera crucial pour les algorithmes en charge : - Dviter les duplicate contents. - De grer les ls de navigation sans erreur. Nous nabordons pas la gestion dun l de navigation dans ce livre. Cest hors sujet et ceci ne prsente aucun intrt en rfrencement.

Table region
La table region liste les codes et rgions de France :
--- Structure de la table region -CREATE TABLE region ( id int(4) NOT NULL auto_increment, nom varchar(255) default NULL, acronyme varchar(255) default NULL, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=liste des rgions franaises AUTO_INCREMENT=89; --- Contenu de la table region --

52

Donnes, mots-cls, rfrencement et mthodologie

INSERT INTO region (id, nom, acronyme) VALUES (1, France, France), (2, Alsace, Alsace), (3, Aquitaine, Aquitaine), (4, Auvergne, Auvergne), (5, Basse Normandie, B Normandie), (6, Bourgogne, Bourgogne), (7, Bretagne, Bretagne), (8, Centre, Centre), (9, Champagne-Ardenne, Champagne), (10, Corse, Corse), (11, Dpartements dOutre-Mer, DOM), (12, Franche-Comt, Franche-Comt), (13, Haute-Normandie, H Normandie), (14, Ile-de-France, IdF), (15, Languedoc-Roussillon, Languedoc), (16, Limousin, Limousin), (17, Lorraine, Lorraine), (18, Midi-Pyrnes, Mi-Pyrnes), (19, Nord-Pas-de-Calais, Nord-PdC), (20, Pays de la Loire, Loire), (21, Picardie, Picardie), (22, Poitou-Charentes, Poitou-Ch), (23, Provence-Alpes-Cte-dAzur, PACA), (24, Rhne-Alpes, Rhne-Alpes), (25, Territoires dOutre-Mer, TOM);

id : la cl unique de chaque enregistrement de cette table. Classique. j nom : le nom de la rgion. j acronyme : la version simplie du nom de la rgion.
j

Importer mots-cls et donnes


Il faut disposer de donnes dans les diffrentes tables. Ces donnes doivent respecter la procdure didentication des mots-cls dcide pour ce site exemple :
j j

Le title de page contient un descriptif de 10 mots et doit tre compos avec les mots et expressions cls stratgiques affects cette page. Expression_clef contient lexpression cl stratgique de cette page. Cette expression peut tre compose de quelques mots-cls. Elle sera place automatiquement entre balises H1 quelque part sur la page.

53

Automatiser le rfrencement avec PHP et MySQL

Ces donnes pourront tre saisies manuellement via PhpMyAdmin ou via une importation CSV vers chaque table.

Rsum et tape suivante


Nous venons de dtailler la base de donnes MySQL, les tables et leurs structures. Ces tables seront utilises pour gnrer des pages HTML dynamiques avec une optimisation native en rfrencement sur Google. Nous avons les donnes et les structures. Pour passer aux algorithmes, il nous faut dabord revisiter les principes du rfrencement naturel. Ayez en mmoire les termes et concepts du chapitre 1, Optimiser des pages pour Google, cela sera plus facile.

2.5 Rfrencement, positionnement naturel : principes


Le rfrencement naturel dun site Internet
Ce sont les actions techniques et rdactionnelles pour optimiser les pages du site an de tenter de les faire afficher dans les SERP dun moteur sur un ou des mots-cls prcis.

Optimiser une page HTML signie mettre en uvre des techniques Internet et rdactionnelles sur cette page an den faciliter la comprhension des contenus par le moteur de recherche. Lobjectif est de le pousser prendre en compte les mots-cls dont le site estime avoir besoin en priorit sur cette page. Quand on dnit que telle page sera la landing page, la page datterrissage, sur telle expression cl, il faut tout mettre en uvre pour pousser en avant cette page an de la positionner naturellement vers le top5 dans les SERP de Google :
j j

Optimisation de la page, objet du prsent chapitre. Optimisation des autres pages pour mettre celle-ci en avant via la technique des nuages de liens. Le principe de cette approche est dcrit un peu plus loin dans le chapitre consacr aux backlinks. Netlinking. Cet aspect web marketing est dtaill dans un autre livre, chez MicroApplication : Le guide complet du rfrencement sur Google. Dans le chapitre consacr aux backlinks du prsent ouvrage, nous effleurerons le sujet an de nous consacrer laspect codage destin faciliter le netlinking et sa variante interne au site, les nuages de liens (tags clouds).

54

Rfrencement, positionnement naturel : principes

Positionnement dun site Internet


Ce sont les actions qui vont hisser les pages dun site dont le rfrencement est correct, vers les premires positions dans une page de rsultats de moteur (une SERP) sur les mots-cls voulus par le webmestre ou le traffic manager.

Sur chaque page de tout site web accessible Google, diffrents critres, que nous dtaillerons plus loin, sont valus par Google. Ils lui permettent de trier dans son index les millions de pages prsentant un mot-cl en commun. Ensuite Google value les backlinks pointant vers chaque page dun site. Cette valuation nalise pour quelques heures le classement dans lindex. Ce classement est rgulirement recalcul. Le fonctionnement des algorithmes lisse les montes ou descentes de pages au sein de lindex. Russir un positionnement des landing pages de son site dans les SERP de Google exige de raliser un travail squentiel :
j

Un rfrencement de qualit, cest--dire les travaux doptimisation de chaque page du site respectant une cohrence vis--vis des mots-cls utiliss et un travail doptimisation globale de toutes les pages entre elles. Ensuite et seulement ensuite, un travail de netlinking interne (nuages de liens) et externe pourra tre mis en uvre.

Contenu et mots-cls
Pour avoir une page de site positionne en bonne place, il faut que les pages de ce site disposent de rels contenus : textes, visuels, vido, etc. crant de la valeur ajoute vis--vis de linternaute lecteur. Les volumes, en nombre de mots par page et en nombre de pages, sont importants pour la qualit du rfrencement. Une fois optimiss, une fois lis ensemble par des nuages de liens, ces pages et ces textes inueront fortement sur le rfrencement naturel du site et sur son positionnement dans lindex du moteur. Le web marketing aura sa charge de slectionner les mots-cls et la rpartition de ceux-ci sur les pages du site.

Accessibilit des mots-cls


Laccessibilit dun mot-cl se dcompose en deux types :

55

Automatiser le rfrencement avec PHP et MySQL

technique : Le robot doit pouvoir accder la page et son contenu. En effet, de nombreux sites ont des JavaScripts et autres gadgets techniques (ash) qui bloquent plus ou moins les bots de Google. smantique : Rendre accessible au moteur les mots et expressions cls retenus lors de ltape prcdente revient optimiser les pages du site. Pour cela, le travail est dcoup en plusieurs tapes : - rpartir les mots-cls et les combinaisons de mots et expressions cls sur les pages du site ; - considrer un maximum de 5 mots-cls par page (nous verrons le pourquoi de cette limitation plus loin) ; - optimiser en consquence chaque page du site autour des mots-cls qui lui sont affects.

Sauf erreur de votre part, le moteur prendra en compte vos 3 5 mots-cls stratgiques pour chaque page. Laccessibilit smantique a ainsi pour objectif dorienter le choix de Google sur votre choix de mots-cls pour chacune des pages de votre site web, les landing pages comme les pages en charge de pousser les landing pages en avant. En cas derreur doptimisation, Google choisira vos mots-cls.

Une stratgie de rfrencement


Le marketing dcide dune stratgie de rfrencement : mots-cls, pages datterrissage Puis au l de lacquisition de statistiques, de retours sur lutilisation du site, des changements sont apports cette stratgie :
j j j

De nouveaux mots ou expressions cls sont prendre en compte. De nouvelles pages sont ajoutes, de nouvelles rubriques sont cres. De nouvelles landing pages sont dnies pour les nouveaux mots et expressions cls.

Il est du ressort du codeur de fournir un site pouvant aisment mettre jour sa stratgie de mots-cls et de pages datterrissage. Nous tudierons cela plus loin.

2.6 Publication de pages dynamiques


Pour programmer une optimisation de page, encore faut-il publier les pages de manire dynamique. Nous devons disposer dun "moteur" de publication. Nous lappellerons logiciel de publication pour viter les confusions avec le terme moteur (de recherche). Ce noyau de code est charg dafficher des pages avec des informations en base de donnes :

56

Publication de pages dynamiques

j j

sur clic de linternaute sur un lien en dur (sinon un bot de Google ne pourra pas suivre le lien) ; dans des gabarits daffichage incluant une navigation par menu.
c Fig. 2.3 : Logique du logiciel de publication de contenus rfrenables sur Google en natif.

Ce livre ne porte pas sur la programmation PHP/MySQL du meilleur logiciel de publication du monde. Le code source utilis dans notre exemple a donc t fortement simpli pour permettre au lecteur de mieux apprhender les techniques de rfrencement naturel automatises en PHP dans ce petit logiciel. Par exemple, nous avons, entre autres, supprim de ce logiciel de publication la gestion du l de navigation, nous avons simpli la mise en page au maximum et avons utilis une charte graphique des plus simples. Ces lments napportent rien la comprhension de ce livre et alourdissaient trop les codes sources.

Prsentation du site publi


Ce mini site utilise le logiciel de publication. Pour commencer, une page daccueil est ncessaire : index.php.

57

Automatiser le rfrencement avec PHP et MySQL

c Fig. 2.4 : Page daccueil du mini site utilisant le logiciel de publication

La page index.php est code spciquement et part. Elle nest pas affiche par le logiciel de publication. Elle possde un menu, install gauche de la fentre dans un souci de simplicit :
<div id=menu_vertical> <ul> <li class=menutitrered materiel> <a href=index.php>Accueil</a> </li> </ul> <ul> <li class=menutitrered societe title=Filtre des rsultats par rgion> <a href=region.php rel=nofollow> Slection par rgion </a> </li> </ul> <ul> <li class=menutitrered logiciel> <a href=#>Finances - fiscalit</a> </li>

58

Publication de pages dynamiques

<li><span>02 </span> <a href=finances-fiscalite-entreprise-diminuer-deduction-exoneration -impots-taxes/rubrique/2/1.html title=02 - Fiscalit de lentreprise> Fiscalit de lentreprise </a> </li> <li><span>03 </span> <a href=Charges-sociales-diminuer-deduction-exoneration-entreprise/ rubrique/3/1.html title=03 - Social et charges>Social et charges </a> </li> <li><span>05 </span> <a href=Banques-finances-creation-entreprise-expert-comptable comptabilite/rubrique/5/1.html title=05 - Banque finance>Banque et finance</a> </li> <li><span>09 </span> <a href=Tresorerie-gestion-entreprise-comptable-comptabilite-expert/ rubrique/9/1.html title=09 - Trsorerie comptabilit entreprise> Trsorerie comptabilit </a> </li> </ul> <ul> <li class=menutitrered societe> <a href=#>Cration entreprise</a> </li> <li><span>01 </span> <a href=obstacles-a-la-creation-entreprise-societe/rubrique /1/1.html title=01 - Les obstacles>Les obstacles</a> </li> <li><span>13 </span> <a href=Environnement-economique-entreprise-economie-creation entreprises/rubrique/13/1.html>Lenvironnement conomique</a> </li> <li><span>14 </span> <a href=aides-financieres-creation-entreprises/rubrique/14/1 .html>Les aides</a> </li> <li><span>16 </span> <a href=Les-chiffres-economie-creation-reprise-entreprise/ rubrique/16/1.html>Les Chiffres</a> </li>

59

Automatiser le rfrencement avec PHP et MySQL

<li><span>18 </span> <a href=Salons-expositions-creation-reprise-entreprises /rubrique/18/1.html>Salons</a> </li> <li><span>19 </span> <a href=Rencontre-createurs-entreprises-idees-echanges-forum -coaching-partage-experience/rubrique/19/1.html>Rencontres</a> </li> </ul> <ul> <li class=menutitrered logiciel> <a href=#>Administratif</a> </li> <li><span>30 </span> <a href=Locaux-bureaux-hebergement-domiciliation-entreprise -societe-loyer-bail-immobilier/rubrique/30/1.html >Locaux Bureaux</a> </li> <li><span>32 </span> <a href=Statut-juridique-risques-entreprise-legal/rubrique /32/1.html>Statuts</a> </li> </ul> <ul> <li class=menutitrered logiciel> <a href=#>Juridique</a> </li> <li><span>34 </span> <a href=Contrat-de-travail-entreprise-salarie-collaborateur -rupture-clause/rubrique/34/1.html >Contrat de travail</a> </li> <li><span>35 </span> <a href=Contrat-commercial-devis-obligations-factures -facturation-reception-travaux-recette-different-vice-cache -garantie-avenant/rubrique/35/1.html >Contrat commercial</a> </li> <li><span>36 </span><a href=Licenciement-salarie-collaborateur-contrat-travail-entreprise /rubrique/36/1.html >Licenciement</a> </li> <li><span>38 </span><a href=Bail-baux-entreprise-commercial-domiciliation-location-bureaux -immobilier-loyer/rubrique/38/1.html >Bail baux commerciaux</a> </li> </ul> <ul> <li class=menutitrered temoignage> <a href=Actualites-agenda-createurs-creation-reprise-entreprises /rubrique/99/1.html>Actualit - Agenda</a>

60

Publication de pages dynamiques

</li> </ul> <ul> <li class=menutitrered societe> <a href=contact-dvv2.php rel=nofollow>Contactez Nous</a> </li> </ul> </div> <!-- fin menu vertical -->

Ce menu est prsent en code source HTML associ une feuille de style. Il est trs simple comprendre.
<div id=menu_vertical> indique le conteneur dcrit en feuille de style. Ce conteneur

dnit une colonne gauche de lcran o le contenu du menu est affich.


<li class=menutitrered materiel><a href=index.php>Accueil</a></li> affiche une entre principale du menu en lassociant un pictogramme, materiel. Tout ceci est dni en feuille de style. Voici lextrait de la feuille de style implique dans cette gestion de pictogramme :
#menu_vertical ul{ padding:15px 0 0 0; margin:0; margin-left:4px ; list-style:none; } #menu_vertical li a{ padding:0; margin:0; color:#2C6A93; background-color:inherit; text-decoration:none; } #menu_vertical li a:hover{ font-weight:bold; text-decoration:underline; color:#ffbe33; background-color:inherit; } .menutitrered a{ display: block; background-repeat:no-repeat; height:25px; width:180px;

61

Automatiser le rfrencement avec PHP et MySQL

background-position:left top; font-weight:bold; font-size:16px; text-indent:15px; padding:5px 0 0 0; color:#2C6A93!important; background-color:#FFFFFF; line-height:0.9em } .menutitrered a:hover{ text-decoration:none !important; color:#ffbe33; background-color:#FFFFFF; } .solutions a{ background-image:url(../artpackage/solutions1.gif); background-repeat:no-repeat; } .societe a{ background-image: url(../artpackage/societe1.gif); background-repeat:no-repeat; } .temoignage a{ background-image:url(../artpackage/temoignage1.gif); background-repeat:no-repeat; } .logiciel a{background-image:url(../artpackage/logiciel1.gif); background-repeat:no-repeat; } .materiel a{background-image:url(../artpackage/materiel1.gif); background-repeat:no-repeat; } .services a{background-image:url(../artpackage/services1.gif); background-repeat:no-repeat; } .solutions a:hover { background-image:url(../artpackage/solutions2.gif); background-repeat:no-repeat; color:#ffbe33!important; background-color:#FFFFFF; } .societe a:hover { background-image: url(../artpackage/societe2.gif); background-repeat:no-repeat; color:#ffbe33!important; background-color:#FFFFFF; } .temoignage a:hover {

62

Publication de pages dynamiques

background-image:url(../artpackage/temoignage2.gif); background-repeat:no-repeat; color:#ffbe33!important; background-color:#FFFFFF; } .logiciel a:hover { background-image:url(../artpackage/logiciel2.gif); background-repeat:no-repeat; color:#ffbe33!important; background-color:#FFFFFF; } .materiel a:hover { background-image:url(../artpackage/materiel2.gif); background-repeat:no-repeat; color:#ffbe33!important; background-color:#FFFFFF; } .services a:hover { background-image:url(../artpackage/services2.gif); background-repeat:no-repeat; color:#ffbe33!important; background-color:#FFFFFF; }

Si on clique sur cette entre Accueil, le lien activ est : index.php, la page daccueil. Aucune importance si vous ne comprenez pas ce codage. Vous pourrez le rcrire ou ladapter vos habitudes. Pour information, ce code HTML appelle une classe stocke en feuille de style, menutirered, qui prend un argument, materiel. Il y a alors affichage du pictogramme appel materiel suivi du texte Accueil avec un lien vers index.php. Rien de bien intressant pour le moment.
<li><span>02 </span><a href= finances-fiscalite-entreprise-diminuer-deduction -exoneration-impots- taxes/rubrique/2/1.html title=02 - Fiscalit de lentreprise>Fiscalit de lentreprise</a></li>.

cette ligne de code affiche :


j j j

02 cest le n de rubrique : pratique pour dboguer.

Un lien HTML associ un title de lien. Un libell de lien : Fiscalit de lentreprise.

Une zone centrale et une colonne de droite sont prsentes.


j

La zone centrale affiche deux conteneurs de texte avec une vignette photo pour chacun.

63

Automatiser le rfrencement avec PHP et MySQL

La colonne de droite affiche 2 conteneurs publiant des actualits ou nouveauts.

Nous venons de parcourir rapidement la page Index.php. Un clic sur 02 Fiscalit de lentreprise dans le menu, en haut gauche, lance un lien qui affiche une page listant tous les articles ayant un rapport avec la scalit de lentreprise.

c Fig. 2.5 : Page article.php affichant tous les articles dun mme thme.

Cette page affiche, comme la page index.php, un gabarit daffichage, logo+bandeau graphique+menu du haut+une colonne droite, et la liste des articles rpondant ce thme : fiscalit de lentreprise. Ces articles sont affichs 5 par 5. Il y a 4 pages de rsultats. On peut naviguer dans ces pages directement via la barre de navigation avec les numros de pages.

64

Publication de pages dynamiques

On peut avoir le dtail complet dun article en cliquant sur un des deux liens disponibles pour cela dans le titre ou en bas de chaque bloc article Lire tout larticle

c Fig. 2.6 : Page zoom.php affichant le dtail dun article

Logiciel de publication adapt aux besoins de Google


Ce mini site est publi par trois scripts PHP, quelques tables MySQL, quelques donnes, un chier .htaccess pilotant lURL rewriting. Nous allons ajouter de nouveaux scripts et de nouvelles tables au l des paragraphes et de la monte en puissance du lecteur dans le domaine de lautomatisation du rfrencement sur Google.

Ces trois scripts sont le cur de notre logiciel de publication :


j j j

index.php est la page daccueil du site. article.php affiche tous les articles dune mme rubrique. zoom.php affiche le contenu dtaill dun article prcis.

65

Automatiser le rfrencement avec PHP et MySQL

Gnration de pages dynamiques article.php


tudions le HREF du lien cliqu dans notre exemple, 02 Fiscalit de lentreprise, dans le menu, en haut gauche :
href=finances-fiscalite-entreprise-diminuer-deduction-exoneration impots-taxes/rubrique/2/1.html

Existe-t-il une telle page sur le site ? Non. Elle est gnre par le logiciel de publication. Dcomposons, en simpliant, la ralit technique dInternet, an de rester lisible :
j j j

Un lien comme celui-ci est envoy au serveur http. Le serveur http, Apache, compare cette URL au contenu dun chier, .htaccess. Si cette URL rencontre une structure dURL identique dans ce chier, il y a une galit et donc Apache dclenche une rcriture de lURL. Le chier .htaccess contient bien sr lURL mettre la place. Et l, cette URL existe rellement sur le disque du serveur http.

Notre URL est transforme par Apache en article.php suivi des arguments passant ce programme PHP la demande du lien : afficher les 5 premiers rsultats de tous les articles appartenant la rubrique n2, nances et scalit des entreprises. Ce mcanisme, fort pratique en rfrencement, sappelle lURL rewriting ou en franais, rcriture la vole des URL. Nous reviendrons en dtail sur ce mcanisme dans le paragraphe qui lui est ddi dans le prsent chapitre. Toutes les entres du menu font appel ce mcanisme. Nous disposons ainsi de mots-cls pertinents dans lURL alors que la ralit est constitue de lappel au mme script PHP avec des codes passs en arguments lui indiquant quoi faire comme traitement. Depuis la liste de tous les articles dune rubrique, on peut, pour chaque rsum darticle, cliquer sur un lien en haut de paragraphe ou dans le bas de celui-ci. Par exemple, pour
http://localhost/BookN2/V1-00/article/controle-fiscal-exercices -concerne.html&src=Fiscalite-entreprise

http://localhost/BookN2/V1-00/ : reprsente lURL de ma machine de dveloppement sous WAMP. Dans un site en ligne, on obtiendrait quelque chose du genre : http://www.monsite .com/ .

66

Publication de pages dynamiques

/article : simple signalisation. Elle indique ici que ce qui suit est un article prcis. Cest

totalement inutile en codage. Mais cest fort pratique pour travailler son rfrencement, notamment quand on utilise les commandes Google inurl:. Par exemple : Un site possde plusieurs entres majeures : forum, annuaire, et le site lui-mme. La commande suivante, saisie dans Google, liste toutes les pages indexes du site quel que soit le rpertoire o elles se trouvent :
site:www.monsite.com

On aura toutes les pages de lannuaire www.monsite.com/annuaire/xxxx.html, toutes les pages du forum, www.monsite.com/forum/xxxx.html, etc. Si vous dsirez comptabiliser uniquement les pages offrant un seul article, il vous suffira de saisir dans Google :
site:www.monsite.com inurl:article

Vous obtiendrez la liste de tous les articles. Il ny aura pas de mlange des genres avec forum, annuaire et dautres fonctionnalits du site. Cette astuce est pratique quand on dbogue ou quon tudie les ractions de Google. Cela permet aussi dviter des accidents, mme peu probables, comme davoir le nommage de 2 chiers diffrents avec un mme nom :
j

monsite.com/forum/charges-sociales-gerant-sarl.html : un post sur ce sujet par un internaute

versus
j

monsite.com/article/charges-sociales-gerant-sarl.html : un article sur ce sujet par un contri-

buteur. Sans la stricte sparation en 2 rpertoires virtuels diffrents, article et forum, on aurait eu quelques soucis dcrasement de chiers diffrents offrant un mme nom.
/controle-fiscal-exercices-concerne.html : dsigne larticle prcis. &src=Fiscaliteentreprise : & est un caractre de sparation dans les URL. src=

dsigne le nom de la rubrique do cet article a t cliqu. Cela permettra ainsi de calculer un l de navigation reprsentant le rel chemin parcouru par linternaute.

67

Automatiser le rfrencement avec PHP et MySQL

Initiation rapide HTACCESS


Nous avons le principe du logiciel de publication. Un clic sur un lien lisible compos de mots-cls appelle des donnes prcises affiches dans une page HTML. La page HTML appele nexiste pas. Il faut la construire depuis les informations contenues dans le lien lui-mme qui donnent les cls daccs aux informations afficher, informations stockes en base de donnes. La premire tape est donc trs importante : la rcriture dURL la vole (URL rewriting) qui va permettre de transformer cette URL humaine en un appel dun programme PHP avec des arguments en ligne. Cette tape sert dinterface, de passerelle entre une URL humaine et une URL machine. Le pilotage de cette rcriture se droule dans le chier .htaccess (point suivi de htaccess) qui contient les instructions pilotant Apache dans la gestion des URL. Ce chier .htaccess utilise un ancien langage informatique appel "expressions rgulires".

Fonctionnement simpli de Apache


Quand un internaute clique sur un lien dans un site, ce lien est envoy au serveur http Apache pour quil renvoie la page associe cette URL linternaute demandeur. Avant toute chose, pour diffrentes raisons de scurit informatique et de diverses autres fonctionnalits dont lURL rewriting, Apache compare cette URL des instructions stockes dans ce chier .htaccess.
Le nom de domaine ne compte jamais
Le nom de domaine nest jamais concern par une URL rewriting. La rcriture dURL dmarre toujours aprs le slash sparant le TLD de la suite. Un TLD est le .com ou .fr dun nom de domaine. Monsite.com/xxxxxx : xxxxx est lURL soumise rcriture par Apache via .htaccess.

Premire rcriture dURL la vole


Voici un premier code source cod dans le chier .htaccess en expressions rgulires:
RewriteEngine on RewriteRule ^([-_a-zA-Z0-9]+)/ ([-_a-zA-Z0-9]+)/([-_a-zA-Z0-9]+)/([0-9]+).html$ article.php?referencement=$1&$2=$3&page=$4

68

Publication de pages dynamiques

RewriteEngine on : la rcriture dURL est utiliser si une instruction qui suit celle-ci le

demande.
RewriteRule : cest parti Cela indique une rgle de rcriture dURL. RewriteRule terme1 terme2 : si lURL soumise Apache correspond au terme 1, lURL rcrite du terme 2 est utilise par Apache en lieu et place de lURL soumise.

^ xxxxxx $ : tout ce qui est entre le ^ et le $ est une expression valuer, le terme 1 de

la rgle de rcriture. Si elle est juste, la rcriture dURL sera lance par Apache. Sinon, il passe la ligne suivante traiter dans le chier .htaccess.
([_azAZ09]+) : toute chane de caractres dont chacun de ceux-ci appartient un des

intervalles suivants :
j j j j

de a z minuscule ; de A Z majuscule ; de 0 9 ; soit (le signe moins ou tiret), soit _ (le caractre underscore, soulign).

Lexpression (ce qui est entre crochets [ et ] ) est encadre par une parenthse ouvrante ( et par un plus + suivi dune parenthse fermante +) . Cela indique Apache que la chane de caractres peut avoir nimporte quelle longueur. Si un caractre nappartient aucun de ces intervalles (par exemple le caractre point .), lvaluation de lexpression rgulire est fausse et Apache passe la ligne suivant du chier .htaccess.
^ ([_azAZ09]+)/ : notre expression rgulire dont le comportement est dcrit prcdemment est encadre par un chapeau ^ et par un slash /.

Le chapeau ^ dsigne comme dj indiqu prcdemment, le dbut du terme 1 (tout ce qui est encadr par ^ et $) de notre rewriterule. Le slash dsigne le caractre / utilis pour sparer les rpertoires dans les URL :
www.monsite.com/vins-de-France/champagnes/, etc.

Apache va comparer lURL soumise par tout internaute lors dun clic cette sous-expression rgulire. Est-ce que le dbut de lURL soumise est compose de tout caractre des intervalles [_azAZ09] , peu importe le nombre de caractres (ce que dsigne le + ) et quun caractre slash / marque cette premire partie dURL soumise ? Si oui, Apache continue dvaluer le premier terme de la rgle de rcriture.

69

Automatiser le rfrencement avec PHP et MySQL

Revoyons ce premier terme de la rgle de rcriture maintenant que nous avons dtaill une premire expression rgulire :
^([-_a-zA-Z0-9]+)/([-_a-zA-Z0-9]+)/([-_a-zA-Z0-9]+)/([0-9]+).html$

Apache cherche la correspondance entre toute URL soumise et ce terme compos dexpressions rgulires : Toute URL dcoupe par trois / avant un .html, ce qui nous donne quatre tronons composant la totalit de lURL soumise.

c Fig. 2.7 : Une URL en .html dcoupe par trois / compatible avec la condition du .htaccess

Chaque tronon doit tre compos de caractres appartenant un des intervalles


[_azAZ09].

Si lURL soumise correspond ces critres, le terme 2 est utilis comme URL en lieu et place de lURL soumise. Examinons le terme 2 de notre rgle de rcriture :
article.php?referencement=$1&$2=$3&page=$4

article.php : le script PHP appel par Apache. Autant la page dsigne dans lURL soumise nexiste pas, autant article.php est prsent dans le rpertoire de notre site Internet gr par Apache. Cest un script PHP, programme informatique qui accepte des arguments en entre, des passages de paramtres essentiels son bon fonctionnement.
referencement=$1 : la variable referencement reoit le premier tronon de notre terme 1. $_GET["referencement"] dans un script PHP nous permettra de rcuprer la valeur de ce

paramtre. Par exemple :


$referencement = $_GET["referencement"];

&$2=$3 : $2 a une valeur, disons que ce tronon n2 sur 4 de lURL soumise est

/rubrique/. Apache cre une variable ayant pour nom le texte de notre deuxime tronon dURL. Dans notre exemple, ce sera rubrique. La variable rubrique reoit le troisime tronon de notre terme 1.

70

Publication de pages dynamiques

&page=$4 : la variable page reoit le quatrime tronon de notre terme 1.

Exemple complet :
http://www.monsite.com/fiscalite-entreprise-SARL/rubrique/1/1.html : URL soumise Apache.

Le nom de domaine nest jamais concern par une rcriture dURL. on dispose donc de ceci :
fiscalite-entreprise-SARL/rubrique/1/1.html : Il ny a aucun slash / au dbut de cette chane de

caractres.
$1 $2 $3 $4

= = = =

fiscaliteentrepriseSARL rubrique 1 1

Comparaisons des 4 tronons positives: rcriture dURL faire. On aura :


article.php?referencement=texte-referencement1&rubrique=1&page=1

Deuxime rcriture dURL la vole


La premire rgle de rcriture dURL nous permet dafficher toute liste darticles appartenant une mme rubrique. La deuxime rgle de rcriture dURL va nous permettre dafficher le dtail dun article prcis. Voici la rgle de rcriture dURL en charge de cela dans notre chier .htaccess.
RewriteRule ^([-_a-zA-Z0-9]+)/([-_a-zA-Z0-9]+).html&src=([-_a-zA-Z0-9]+)$ zoom.php?referencement=$1&url=$2&src=$3

Grce lexprience acquise lors de lexamen dtaill de notre premire rgle de rcriture, nous allons pouvoir aller plus vite.

c Fig. 2.8 : Une URL en .html&src= dcoupe par un / compatible avec la 2me condition du .htaccess

71

Automatiser le rfrencement avec PHP et MySQL

Si lURL soumise Apache est de la forme chane de caractres1/chane de caractres2.html&src=chane de caractres3, lURL utilise par Apache sera :
Zoom.php?referencement=chane de caractres1&url= chane de caractres2&src=chane de caractres3

Rsum sur URL rewriting


Vous venez de voir une rgle de rcriture dURL avec quelques points intressants :
j

Comment on passe dune URL humaine, visible par les internautes dont Google, une autre, inadquate pour le rfrencement mais totalement adapte aux besoins des codeurs de sites web dynamiques via la programmation dans le chier .htaccess. On peut gnrer une variable, dans notre exemple, $2=$3, gnration de la variable rubrique. On peut initialiser cette variable juste cre, ici on linitialise 1, et la faire prendre en compte comme argument pass un script PHP. Ici article .php prendra en compte rubrique=1 et la logique interne de lapplication ragira en consquence en affichant tous les articles dpendant de cette rubrique.

Ce paragraphe ne se veut pas une formation sur .htaccess de Apache et sur la programmation des expressions rgulires. Il existe de nombreux tutoriaux qui dtaillent .htaccess bien plus que ce livre. Lobjectif de ce paragraphe est de vous initier an que vous puissiez comprendre et utiliser notre logiciel de publication de pages 100 % accessible aux bots de Google.

Lister tous les articles dune rubrique


Le script PHP article.php a pour mission dafficher tous les articles dune mme rubrique. Les URL "humaines" et contenant des mots-cls lisibles par les bots de Google sont de la forme que nous venons de voir dans linitiation .htaccess et sa programmation pour lURL rewriting :
http://www.monsite.com/fiscalite-entreprise-SARL/rubrique/1/1.html

Rappel : monsite.com nest jamais pris en compte dans la rcriture dURL. Quelques contraintes doivent tre prises en compte :
j j

La pagination des rsultats. Dans notre exemple, on affiche les articles cinq par cinq. Les URL gnres par ce script articles;php doivent tre compatibles avec les rgles de rcriture mises en place dans .htaccess, que ce soit pour appeler dautres listes darticles ou faire un zoom sur le dtail dun article prcis.

72

Publication de pages dynamiques

Voyons le dbut du code source de article.php :


<?php require_once("php_inc/MiseEnPage.inc.php"); require_once("php_inc/init.inc.php"); require_once("php_inc/biblio_inc.php"); // ----------------------------------// Mmorisation du texte de rfrencement // pour rutiliser dans les URLs // ----------------------------------$referencement = "referencement"; if (isset($_GET["referencement"])) $referencement = $_GET["referencement"];

Classiquement, il y a un require sur les diverses bibliothques de fonctions PHP dont on va avoir besoin dans ce script articles.php.
MiseEnPage : les fonctions lies la mise en page. Init : linitialisation des accs aux tables et base de donnes. j Biblio : bibliothque contenant des fonctions diverses et varies que nous allons
j j

utiliser au l des pages.


j

$referencement = "referencement"; : vieille habitude, nous prfrons toujours

j j

instancier une variable une valeur avant de la manipuler avec des tests. Ainsi, en mode Debug, on aura un rfrentiel : lorigine, cette valeur valait "ceci". if (isset($_GET["referencement"])) : Si largument referencement existe et quil contienne une valeur, on le rcupre dans la ligne de code suivante. $referencement = $_GET["referencement"]; : on a la chane de caractres referencement issue de lURL rewriting.

Voyons la suite du code source de article.php. Ce bloc de code a pour objectif de construire la requte SQL qui va rcuprer la liste de tous les articles correspondant au critre de tri indiqu dans le lien. Dans cette maquette de site, nous avons deux possibilits :
rubrique, critre que nous avons dj voqu auparavant ; j region que nous voquerons plus loin.
j

// // // // //

----------------------------------On recupere linformation de tri en parametre Les attributs de tri sont : rubrique, region -----------------------------------

73

Automatiser le rfrencement avec PHP et MySQL

// en sortie de cette sequence de if : // on doit avoir $sql qui content la requete construite // pour lister les articles correspondants au(x) critere(s)

if (isset($_GET["rubrique"])) { $parametre = "rubrique"; $valeur = $_GET["rubrique"]; $rubrique = $valeur ; $sql = "SELECT * FROM articles, article_rubrique WHERE article_rubrique.id_rubrique=$valeur AND article_rubrique.id_article=articles.id" . " ORDER BY poids DESC "; // on aura besoin de tout le dtail de la rubrique. $sql_rubrique= "SELECT * FROM rubrique WHERE rubrique.id=$valeur" ; } elseif (isset($_GET["region"])) { $parametre = "region"; $valeur = $_GET["region"]; $sql = "SELECT * FROM articles WHERE $parametre=$valeur"; }

if (isset($_GET["rubrique"])) : si rubrique existe et contient quelque chose : article.php?rubrique=1 correspond positivement ce test conditionnel. j $parametre = "rubrique" : La chane "rubrique" est sauvegarde dans une variable $parametre. j $valeur = $_GET["rubrique"]; $rubrique = $valeur : Le contenu valeur est stock dans les variables $rubrique et $valeur :
j

$sql = "SELECT * FROM articles, article_rubrique WHERE article_rubrique.id_rubrique=$valeur AND article_rubrique.id_article=articles.id" . " ORDER BY poids DESC ";

Dans cette requte $sql, on cherche tous les articles appartenant la rubrique cible.

74

Publication de pages dynamiques

On aura besoin plus loin de toutes les informations sur la rubrique cible par le script article.php.
// on aura besoin de tout le dtail de la rubrique. $sql_rubrique= "SELECT * FROM rubrique WHERE rubrique.id=$valeur" ;
j

$sql_rubrique recherche toutes les informations sur la rubrique vise.

Continuons notre source article.php :


// ----------------------// Si le numero de la page n est pas renseigne par defaut // on considere que c est la premiere // ----------------------$page = ( isset($_GET["page"]) ? $_GET["page"] : 1); if (isset($_GET["rubrique"])) //arg. de article.php = rubrique { if ($request = mysql_query ($sql_rubrique) ) { $line_rubrique=mysql_fetch_array($request,MYSQL_BOTH); // la page affiche aura un title de page et // un meta description issu des infos de rubrique. $title_page = $line_rubrique["title"] ; $meta_description_content = $line_rubrique["description"]; } else { // probleme echo debug $sql_rubrique - erreur SQL sur : . $sql_rubrique . . mysql_error() . <br /> ; } } else { if (isset($_GET["region"])) { // inutile de mettre un title et // un meta desciption pour le moment } else // probleme - ce nest pas un argument valide { echo debug pas d\argument valide - article.php : <br /> ; } }

75

Automatiser le rfrencement avec PHP et MySQL

Si on a les articles dune rubrique afficher, on rcupre toutes les informations sur la rubrique. Cela permet dinitialiser les futurs title et meta description de la page afficher avec les title et description de la rubrique. Cest un dbut quil faudra rviser et amliorer ; il y a trop de dfauts dans cette approche. Si on a les articles dune region afficher, on ne fait rien.

Lerreur viter ou grer


Le script article.php ne gre quun seul critre : rubrique. La tentation est grande pour le codeur den ajouter dautres, choisir parmi les champs de la table MySQL articles. Par exemple :
j j j

Contributeur ; URL ; Source.

De plus, ce serait trs facile et trs court coder. Ce site offrirait linternaute de multiples manires de recherches darticles. Un vrai plus pour le site, les mme articles. Sans prcaution, un tel site proposerait Google plusieurs fois le mme article sous diffrentes URL : nous aurions alors des duplicate contents. Cela constitue une des erreurs classiques viter en codage web informatique. Google nindexera quune URL avec la possibilit que les mots-cls de cette URL ne soient pas les plus adquats aux besoins en rfrencement du site. Nous verrons un peu plus loin comment grer les N chemins (les N URL) possibles dune page de contenu. Un title de page et un meta description doivent tre uniques pour une efficacit maximale. Uniques, mais leurs mots-cls doivent tre cohrents avec le contenu de la page sous peine de fortes pertes en positionnement. Nous avons mis le title de la rubrique comme title de page. Il est trs court et rptitif avec toutes les pages listant les articles de cette rubrique cinq par cinq. Il faut donc complter et personnaliser ce title de page sous peine davoir des erreurs signales par Google comme des rptitions de title ou de meta description (voir votre interface Web Mastering Tools dans votre compte Google). La mme problmatique se pose pour le meta description :
$title_page = $title_page . ** ; // on separe par ** les donnes agrges.

76

Publication de pages dynamiques

// Attention : ** est utilis par la fonction meta_article() $meta_description_content = $meta_description_content .** ;

Nous allons agrger des informations venant des articles eux-mmes. Ces informations seront spares par un tiret (-) an de faciliter la mise au point et la dtection dincohrence.
Le snippet Google.
Le snippet Google est le petit descriptif dune URL affich par Google dans une SERP. Dans de nombreux cas, il est prlev par Google dans le meta description ou dans le texte de la page en fonction des mots clefs saisis par linternaute. An de couvrir le cas o linternaute saisit uniquement les mots clefs stratgiques cibls par la page, cas thoriquement le plus courant, il est important, si cest possible, de faire gurer ces mots cls stratgiques dans le meta description an de matriser le rsum affich en snippet.

c Fig. 2-9 : Un snippet Google dtaill

Ainsi un title de page sera constitu :


j j

du title de la rubrique (voir table rubrique) ; de quelques mots pris au dbut de chaque title darticle list dans la page.

Le code source ralise cette opration sur le title et sur le meta description de la page de 5 rsultats afficher via le script article.php :
// FAIRE ce traitement uniquement si on est sur une recherche // par rubrique, sinon on ne fait RIEN

77

Automatiser le rfrencement avec PHP et MySQL

// on veut personnaliser la page article en cours // aux ($resultats_par_page = 5) articles affichs. // if (isset($_GET["rubrique"])) { $sql_calcul_meta = $sql ; if ($request = mysql_query($sql)) $nombre_de_resultats = mysql_num_rows($request); else $nombre_de_resultats = 1; // ----------------------// On definit le nombre maximal de resultats afficher / page // ----------------------$resultats_par_page = 5; // ----------------------// On calcule le nombre de pages ncessaires pour // afficher tous les articles de cette rubrique // ----------------------$nombre_de_pages = ceil($nombre_de_resultats / $resultats_par_page); $debut = ($page - 1)*$resultats_par_page; // avec $page et $debut, on positionne la requete SQL // juste sur les 5 articles de la page demande en affichage $sql_calcul_meta .= " LIMIT " . $debut .", " . $resultats_par_page .";"; // on a construit la requete qui va nous permettre // dacceder aux titles / description de chaque // article qui va tre affich // on pourra personnaliser ainsi la page article en cours // aux articles affichs. if ($request = mysql_query($sql_calcul_meta)) { while ($line = mysql_fetch_array($request)) // on recupere chaque title / description de chacun // des 5 articles possibles de la page article.php { $title_page = $title_page . $line["title"] . ** ; // on a nos 1 + jusque 5 title (1 rubrique, 5 article) $meta_description_content = $meta_description_content . $line["description"] . ** ; // on a nos 1 + jusque 5 meta description

78

Publication de pages dynamiques

} // on prend 2 ou + mots par title ; // 4 ou plus par meta description $title_page = meta_article($title_page, "title") ; $meta_description_content = meta_article($meta_description_content , "description") ;} } // du if (isset($_GET["rubrique"]))

Pour des raisons que nous dtaillerons plus loin, il est inutile de faire ce traitement sur des pages autres que les rubriques. Ces raisons sont lies aux approches pour viter les duplicate contents que nous avons voqus prcdemment pour cause daffichage par article.php de mme articles avec diffrentes URL, une par critre de tri. Ce traitement :
j j j

Simule les calculs pour laffichage des articles cinq par cinq en grant la pagination. Calcule les (5) articles afficher dans la page demande. Rcupre des informations sur chacun des 5 articles de la page afficher pour construire un title et un meta description unique et cohrent avec la page.

Commentons le code source :


if (isset($_GET["rubrique"])). On fait ce traitement uniquement si lon affiche une

page de 5 articles avec une rubrique renseigne comme argument pass dans lURL. $sql_calcul_meta = $sql ; pour viter les bogues, prsents ou surtout venir, lors de futures volutions, on spare les 2 requtes mme si elles sont identiques.
{ if ($request = mysql_query($sql)) $nombre_de_resultats = mysql_num_rows($request); on rcupre le nombre darticles

afficher
Else $nombre_de_resultats = 1; pour viter une division par 0 plus loin. $resultats_par_page = 5. Pour tout lexercice et pour diffrentes raisons, on

bloquera cinq (5) cette valeur. Vous pourrez augmenter cette valeur quand, en ayant pratiqu le reste du livre, vous comprendrez limpact majeur, positif ou dsastreux, sur le rfrencement de tout changement de cette valeur. Surtout, ne laugmentez pas. Vous pouvez la diminuer sans crainte en revanche.
$nombre_de_pages = ceil($nombre_de_resultats / $resultats_par_page). On calcule

le nombre de pages ncessaires afficher tous les articles de cette rubrique. Ce calcul nous est utile pour savoir quels seront les 5 articles affichs.

79

Automatiser le rfrencement avec PHP et MySQL

$debut = ($page 1)*$resultats_par_page; $sql_calcul_meta .= LIMIT . $debut .", ". $resultats_par_page .";";

Avec $page et $debut, on positionne la requte SQL juste sur les 5 articles de la page demande en affichage.
$page a t initialis avec largument page lors de lappel articles.php. $sql_calcul_meta est concatn avec le calcul SQL permettant dextraire uniquement les

5 articles qui nous intressent : ceux qui seront affichs. Rappel : on limite cinq enregistrements maximum par page affiche. Il peut y en avoir moins, bien sr, soit parce que la rubrique commence se remplir, soit parce que le nombre darticles dune rubrique ne correspond pas un multiples de cinq. La dernire page dune rubrique aura donc de un cinq chapeaux darticles afficher. Ces un cinq enregistrements contiennent pour chacun (voir la table article) de prcieux champs dinformations pour le rfrencement : TITLE et META DESCRIPTION pour notre exemple ce niveau du livre. Nous allons prlever les informations de ces champs pour crer ainsi ce que le rfrencement sur Google exige : un title et un meta description uniques pour chaque page mais cohrents entre eux et avec le contenu de la page (qui affiche les cinq chapeaux issus de notre requte slective, donc obligatoirement une cohrence entre le chapeau dun enregistrement et les informations de chaque paire de title et meta description). La cohrence globale sera donc assure.
Contenu du META DESCRIPTION
Le META DESCRIPTION na officiellement aucune importance dans le positionnement daprs Google et Matt Cutts. Mais il a une norme importance dans le taux de clic depuis la SERP quand il est utilis comme snippet. Une rdaction adroite du META DESCRIPTION permet de favoriser son utilisation par Google comme snippet, typiquement en y regroupant un texte si possible cohrent et lisible avec les mots cls stratgiques de la page. Dans le cas de article.php, nous ciblons des requtes utilisant des combinaisons peu usites de mots cls (un effet longue traine), ce qui fait que la qualit de construction de META DESCRIPTION nest gure importante, contrairement celle de zoom.php.

if ($request = mysql_query($sql_calcul_meta)) si on rcupre de 1 5 enregistrements, on va rcuprer les title et meta description. Sinon, on laisse tel que. Rappel : il y a le title et le meta description de la rubrique en dbut de chacun de ces meta de la page afficher. { while ($line = mysql_fetch_array($request)) : on rcupre chaque title et chaque

description de chacun des 1 5 articles possibles.

80

Publication de pages dynamiques

{ $title_page = $title_page . $line["title"] . **. On concatne title_page avec les 1 5 titles de page. Chaque ajout est spar par la squence ** qui sert de dlimiteur obligatoire. $meta_description_content = $meta_description_content . $line["description"] . ** ; mme chose pour le meta description. }

Dans $title_page nous avons le title de la rubrique et les 1 5 title de pages de nos 1 5 enregistrements possibles. Le meta description a t trait de la mme manire. Cest beaucoup trop long. Nous avons trop de mots dans le title. En effet en concatnant les mots de chaque title on obtient un title compos de dizaines de mots. Il faut rduire le nombre de mots. Pour faire simple ce niveau du livre, nous allons simplement conserver uniquement les premiers mots de chaque title de page. Cest lobjectif des 2 lignes de codes suivantes :
$title_page = meta_article($title_page, "title") ; // on prend 2 ou + mots par title ; 4 ou plus par meta description $meta_description_content = meta_article($meta_description_content , "description") ; } } accolade fermante du if (isset($_GET["rubrique"])) de la squence de code tudie.

Nous devons tudier la fonction meta_article($argument) pour comprendre ce qui se passe :


function meta_article($page, $type) { $meta = ; $long = strlen($page) ; $nb_articles = mb_substr_count($page, "**") ; // mb_substr_count($page, "**") renvoie le nombre // doccurences de "**" dans la string $page // 1 ** par title. 6, le maximum, correspond // un title rubrique + 5 enregistrements de la table article. switch ($nb_articles) { case 0: echo "Probleme : 0 occurence de ** dans meta_article <br />"; break; case 1: $pas=12; break; case 2: $pas=6;

81

Automatiser le rfrencement avec PHP et MySQL

break; case 3: $pas=4; break; case 4: $pas=3; break; case 5: $pas=3; break; case 6: $pas=2; break; } if ($type == "description" ) $pas = $pas * 2 ; // 2 fois plus de mots pour meta descrip while ($long > 0) // tant quon est pas au bout de la chaine { // on recupere le premier bloc de mots jusque ** $i = stripos($page , "**") ; // on le copie dans $textfull du car n0 au $i me $textfull = substr($page, 0, $i); // on enlve le text dj trait, $page = substr_replace($page, , 0, $i+2) ; // on ajoute 2 pour eliminer les 2 * devenus inutiles $long = $long - ($i+2) ; $tab = str_word_count($textfull,1,0123456789&;%_); for ($a = 0;$a<$pas;$a++) // on prend les $pas premiers mots { $meta = $meta . . $tab[$a] ; // on les concatne } } return ($meta) ; // le meta, title ou description, // est la bonne taille en nombre de mots }

$page contient une string : ce stade du livre, cest soit un title de page, soit un meta description. $type indique le type de meta traiter : title (donc limite de mots 10/12) ou meta

description, le double de mots par rapport title). Par convention, cette fonction php4 meta_article() stocke dans /php_inc/ biblio_inc .php exige :

82

Publication de pages dynamiques

title ou meta_description de chaque enregistrement de la table article et de la table rubrique doivent avoir les 3 mots-cls les plus stratgiques en dbut de string. j Les diffrentes concatnations doivent tre spares par le substring ** pour permettre le bon fonctionnement de la fonction meta_article().
j

Un principe simple est appliqu :


j j j j j

Nous avons ajout de 1 6 champs issus des tables rubrique et article dans $page. chaque ajout correspond un ajout de ** comme dlimiteur. Nous comptons le nombre dajouts. Le meta nal ne doit pas dpasser 10 12 mots pour un title et 20 24 mots environ pour un meta description. La fonction renvoie un title ou un meta description de la bonne taille. Il sera affich dans la page issue de articple.php.

$meta = ; $long = strlen($page) ; $nb_articles = mb_substr_count($page, "**") ; // 1 ** par title. 6, le maximum, correspond // un title rubrique + 5 enregistrements de la table article.

La fonction mb_substr_count($page, "**") renvoie le nombre doccurrences de ** dans la string $page. Nous avons donc le nombre dajouts issus des tables rubrique ou article : de 1 6.
switch ($nb_articles) {

La fonction switch nous permet dinitialiser $pas la valeur la plus adquate pour avoir un maximum de 10/12 mots pour un title de page.
if ($type == "description" ) $pas = $pas * 2 ;

Pour un meta de type description, on double la valeur du pas pour avoir un maximum de 20 24 mots. Le reste du code de cette fonction est simple :
j j j j

extrait chaque ajout, une substring donc, dlimit par **. limine les ** devenus inutiles. range les mots de cette substring dans un tableau. transfre et on concatne les $pas premiers mots de ce tableau dans la string $meta.

On On On On

83

Automatiser le rfrencement avec PHP et MySQL

On renvoie le rsultat qui sera de 10 12 mots pour une balise TITLE de page et de 20 24 mots pour une meta description de page.

Cette partie du code source de article.php que nous venons de voir, prparait le travail daffichage. Passons laffichage de notre page :
MiseEnPage::haut($title_page,$meta_description_content,$rep); ?> <div id="sousban"> </div> <div id="pagegauchetete"> <?php MiseEnPage::MenuGauche() ; ?> </div> <!-- fin conteneur : page gauche tete --> <!-- conteneur centre et col. droite --> <div id="pagecentretete"> <div id="pagedroite"> <!-- COLONNE DROITE --> <?php MiseEnPage::MenuDroite($rubrique) ; ?> </div> <!-- fin page droite -->

Nomenclature pour les champs


Nous venons de voir que les premiers mots-cls des champs title et description de ces tables sont utiliss. Il en ressort quune procdure doit tre applique lors de la saisie de ces champs :
Title : les 2 4 mots-cls fondamentaux doivent tre en dbut de string. Meta description : les 4 8 premiers mots doivent contenir les mots-cls fondamentaux et compatibles avec le snippet Google.

Pour Title, la lisibilit humaine ne doit en aucun cas tre altre. Il faut tre conscient que les pages affiches par article.php ne sont pas appropries pour tres des landing pages mais plutt pour tre des pages captant des combinaisons de mots-cls peu usites.

La fonction PHP5 haut() de la classe MiseEnPage (dans php_inc/MiseEnPage.inc.php) affiche la partie haute de notre gabarit de page : logo, bannire, title de page, meta description, etc.

84

Publication de pages dynamiques

La mise en page gauche puis centrale et droite est gre par les fonctions MenuGauche() et MenuDroite() via les conteneurs pagegauchetete, pagecentretete et pagedroite dcrits en feuille de style. Cest du XHTML de base sur lequel nous ne passerons pas plus de temps.
MenuGauche() affiche le menu de gauche de notre site web exemple. Chaque lien possde une URL conforme notre rgle de rcriture (voir .htaccess dans le prsent chapitre).

Pour rappel :
<li><span>02 </span> <a href=finances-fiscalite-entreprise-diminuer-deduction -exoneration- impots-taxes/rubrique/2/1.html title=02 - Fiscalit de lentreprise> Fiscalit de lentreprise </a> </li>

nances-scalite-entreprise-diminuer-deduction-exoneration-impots-taxes/rubrique/2/1 .html Le premier tronon de notre URL ne sert quau rfrencement. Il na aucun impact sur la logique applicative de notre logiciel de publication. Sa seule mission est de pousser les mots-cls de sa rubrique vers Google. Le menu et les liens ainsi dposs, manuellement dans une fonction PHP5, vont surprendre nombre de codeurs avertis qui se demanderont "pourquoi une approche technique aussi basique". Cest volontaire. En effet, ajouter au prsent ouvrage une fonction qui prend un champ dans la table rubrique et gnre directement un menu sans intervention manuelle par un codeur laurait alourdit inutilement. De telles types doptimisations strictement PHP ne sont pas dans lobjectif de ce livre. On fait donc simple, rudimentaire et clair dans ce site web exemple an de rester concentr sur la partie rfrencement. /rubrique/2/1.html. Comme dj discut, cette URL demande laffichage de la page 1 des rsultats de la rubrique n2 via lURL rewriting qui va transformer cette partie de lURL en paramtres passs au script PHP. Ci-aprs, une squence que nous avons dj vue : la pagination des rsultats. Ici, on ne se contente pas de la simuler pour savoir quelles informations prendre an de personnaliser les title et meta description de la page. On pagine pour de vrai :

85

Automatiser le rfrencement avec PHP et MySQL

<?php if ($request = mysql_query($sql)) $nombre_de_resultats = mysql_num_rows($request); else $nombre_de_resultats = 1; // ----------------------// On definit le nombre maximal de resultats // afficher par page // ----------------------$resultats_par_page = 5; // ----------------------// On calcule le nombre de pages // ----------------------$nombre_de_pages=ceil($nombre_de_resultats/$resultats_par_page); $debut = ($page - 1)*$resultats_par_page; $sql .= " LIMIT ". $debut .", ". $resultats_par_page .";"; if ($request = mysql_query($sql))

$request contient les enregistrements de la table article dont il faut afficher les chapeaux dans la page :
{ echo <div id="pagetext">; // on affiche la liste des numros de page // au dessus du futur affichage des 5 / 5 resultats echo "<b>Page</b> : "; for ($i=1 ; $i<=$nombre_de_pages ; $i++) { echo ( ($i==$page) ? "<b>" : ""); echo " <a href=\"".$referencement ."/".$parametre."/".$valeur ."/".$i.".html\">"; echo $i; echo "</a> "; echo ( ($i==$page) ? "</b>" : ""); } if ($nombre_de_pages==0) echo "<em>aucun rsultat</em>"; echo "<br />";

On affiche la gestion des pages en premier sous la forme dune ligne de nombres cliquables, de 1 n.

86

Publication de pages dynamiques

Si le nombre de page est de 0, aucun rsultat ne correspond cette demande (rubrique vide).

Problme de duplicate content

c Fig. 2.10 : Ce chapeau darticle dpend de cette 1re URL / rubrique primaire.

Nous allons devoir grer notre premier un chapeau dun article appartenant distinctes contenant un mme article. laisserons accessible au bot de Google

problme de duplicate content. Si nous affichons plusieurs rubriques, nous aurons plusieurs URL Il faut donc slectionner le seul lien que nous pour liminer ce risque.

c Fig. 2.11 : Ce chapeau darticle dpend galement de cette seconde URL / rubrique secondaire.

87

Automatiser le rfrencement avec PHP et MySQL

Lapproche retenue dans ce site exemple est :


j j j j j

Un article appartient principalement une seule rubrique que nous appellerons primaire. Les autres rubriques auxquelles un article peut appartenir seront appeles secondaires. Seuls les liens vers des articles dpendant de manire primaire de la rubrique en affichage via article.php doivent tre accessibles Google. Ces informations de dpendance sont gres dans la table article_rubrique. Un article a une seule rubrique primaire. Les autres liens seront rendus invisibles Google via la balise rel="nofollow" . Ainsi le codeur remplit sa mission : une seule URL pour un seul contenu, avec une URL slectionne par la logique applicative du logiciel, donc la plus adquate notre rfrencement :

if (isset($_GET["rubrique"])) { // affichage des 1 5 rows du rsultat de la requte while ($line = mysql_fetch_array($request)) { // on veut savoir si larticle afficher // est dans sa rubrique primaire ou non // sql_ps : Primaire ou Secondaire ? $id_art = $line["id"] ; $sql_ps = "select * from article_rubrique WHERE article_rubrique.id_article = $id_art AND article_rubrique.id_rubrique=$valeur "; // on recupre la seule ligne o cet article // est dans la rubrique ($valeur) afficher if ($request_ps = mysql_query($sql_ps)) { if ($line_ps = mysql_fetch_array($request_ps) ) { if ($line_ps["primaire"] == 1) { $ps = "rubrique_primaire" ; } else { $ps = "rubrique_secondaire" ; } } else { echo Debug : ERREUR : ; } } // fin du module detectant si larticle appartient ou non // sa rubrique principale

88

Publication de pages dynamiques

Pour chaque enregistrement de la table article, on veut savoir si la rubrique en cours est primaire ou secondaire.
$ps contient le statut de larticle en cours de traitement. Il est dans sa rubrique primaire

ou non.
preview_article($line,$line_rubrique["nom"],$valeur, $ps);

La fonction PHP4 preview_article est stocke dans php_inc/ biblio_inc.php. Cette fonction a en charge laffichage de larticle en mode Preview, cest--dire affichage dun minimum dinformations permettant linternaute de savoir sil dsire lire le dtail ou non de cet article : chapeau, titre, n de rubrique.

c Fig. 2.12 : Affichage dans le centre de article.php par preview_article.

Dtaillons cette fonction preview_article ci aprs.


function preview_article ($line,$pathway_prec,$valeur_rubrique,$ps) { echo <div class="bordurebloc3"> <div class="borduretitre3"> ; if ($ps == "rubrique_primaire") { echo <a href="article/ . $line["url"] ..html&src=. $pathway_prec

89

Automatiser le rfrencement avec PHP et MySQL

. ">. $line["titre"] .</a> </div> <div class="bordureparagraphe3"> <h2>. $line["chapeau"] .</h2> ; $sentence = cut_sentence($line["texte"],50) ; // on joue avec le feu ! 50 car. = zone rouge // // il faut eviter davoir un debut de code HTML // coup en plein milieu => risque affichage erratique sinon. // donc sil y a des <div> <table>, // il ne faut pas afficher lextrait du texte mais que le chapeau if (html_dans_string($sentence) ) echo ... ; else echo $sentence . ... ; echo </div> <div class="tavoirplus3"> Lire TOUT l\article : <a href="article/ . $line["url"] ..html&src=. $pathway_prec . "> . $line["url"] . </a> ... Article paru le . $line["date-si"] . </div> </div> ; } else // donc $ps == "rubrique_secondaire" // On doit bloquer les bots de Google { echo <a href="article/. $line["url"] ..html&src=. $pathway_prec . " rel="nofollow"> . $line["titre"] .</a> </div> <div class="bordureparagraphe3"> <h2>. $line["chapeau"] .</h2> ; $sentence = cut_sentence($line["texte"],50) ; // il faut eviter davoir un debut de code HTML // coup en plein milieu => affichage erratique sinon. if (html_dans_string($sentence) ) echo ... ; else echo $sentence . ... ; echo </div> <div class="tavoirplus3">

90

Publication de pages dynamiques

Lire TOUT l\article n . $line["id"] . : <a href="article/ . $line["url"] ..html&src=. $pathway_prec . " rel="nofollow"> . $line["url"] . </a> Article paru le . $line["date-si"] . </div> </div> ; } }

Cette fonction est crite de la manire la plus simple possible pour en faciliter la comprhension. Il y a des optimisations de code ralisables dans ce source mais encore une fois, ce nest pas notre objectif de crer le code parfait, quelquefois difficile lire par un dbutant en PHP. Les div utilises sont dcrites dans les feuilles de style. Cest standard donc inutile de sattarder dessus. Cette fonction traite les donnes de larticle afficher en deux groupes distincts sur un point cl : les liens sont bloqus par un rel="nofollow" pour les articles nappartenant pas de manire primaire la rubrique en cours daffichage. Ainsi, grce lapplication de cette rgle, on vite davoir un duplicate content entre la page ddie larticle et les diffrents chemins pouvant y mener. Google ne verra quun seul chemin valide, celui de la rubrique dappartenance principale de larticle.
Rel="nofollow" vite le duplicate content
En bloquant le bot de tout moteur de recherche grce cette balise sur les URL dupliques vers une mme page, on vite les duplicate contents. Cette logique peut tre utilise pour coder de multiples possibilits de navigation humaine. Rappelez vous, on pourrait chercher des articles par rubriques mais aussi par contributeurs, sources, etc. Bref, on pourrait crer des liens avec URL rewriting, permettant de chercher selon dautres critres des articles. Cela serait un plus pour les internautes et la qualit ergonomique du site. Mais cela crerait de nombreux duplicate contents sauf baliser en rel="nofollow" toutes les autres possibilits de navigation crant un potentiel de duplicate content.

Un autre point technique est valuer : la qualit des textes afficher. Dans notre mthode, un chapeau est toujours un texte simple, sans code HTML ou autre. En revanche, le texte de larticle peut contenir de multiples codes HTML plus ou moins

91

Automatiser le rfrencement avec PHP et MySQL

complexes. Hors nous affichons un extrait de ce texte dans preview_article. On risque donc un affichage erratique dans la page si on coupe le texte nimporte o. Pour faire simple et rester centr sur lobjectif de ce livre, nous allons appliquer une politique simple : si un code HTML est dtect dans lextrait afficher, on naffiche rien. La fonction html_dans_string($sentence) renvoie VRAI si un code HTML est dtect dans la string passe en argument. Sur VRAI, on naffiche rien. Un autre point reste grer dans preview_article : jouer ou non avec le feu, avec la limite en duplicate content de Google et le risque dune pnalit associe au franchissement dun seuil dont on ne sait pas grand-chose.

Jouer avec le feu : sanction Google possible


Deux stratgies sont possibles dans preview_article :
j

Jouer avec le feu. On affiche les N premiers caractres du texte principal de larticle. Avantage : on leste en volume de texte notre page en cours ce qui est intressant en rfrencement. Inconvnient : on risque de dmarrer un duplicate content. En effet, ce mme contenu, les N premiers caractres, sera affich dans la page ddie cet article. Scurit dabord : on naffiche rien ou moins de 30 caractres (N < 30). On peut aussi casser le rythme de lextrait affich en y insrant des mots ou un commentaire venant dune autre source entre chaque extrait.

c Fig. 2.13 : Chapeau puis extrait du texte de larticle en duplicate content interne avec le mme texte de larticle complet.

Insrer 35 50 caractres du texte de larticle dans la page rsum sous le chapeau augmente le volume de texte de notre page et renforce la cohrence du lien reliant cette page la page ddie larticle. Cela renforce mutuellement le rfrencement de nos deux pages.

92

Publication de pages dynamiques

c Fig. 2.14 : Larticle complet avec le mme chapeau et la rdition de lextrait en tte de texte.

Il est donc tentant pour un rfrenceur daller chercher la limite. Google change frquemment les seuils et stratgies de dclenchements des duplicate contents. Le risque existe davoir une sanction. Les deux pages sont lies par un backlink, donc le texte dupliqu est immdiatement visible. Google possde des seuils de tolrance et des rgles comportementales trs volutives et difficiles cerner dans le dtail. Pour faire simple, entre 35 et 50 caractres dupliqus, on est en zone orange : on a une probabilit davoir une pnalit. Au-del, on passe en zone rouge avec une probabilit de pnalit quasi certaine. En dessous, a priori, on ne risque rien. Mais attention, ces chiffres varient en fonction de plusieurs critres. Par exemple, des termes utiliss dans votre contenu : plus les mots utiliss, les formulations crites seront rares et peu usits, plus vite le seuil de duplicate content approchera. Conclusion : chaque rfrenceur de xer le curseur N qui lui semble souhaitable.

Gnration de pages dynamiques zoom.php


Nous venons de voir article.php en dtail. Ce script, article, affiche des listes de rsums darticles. Un clic sur un lien dans le rsum entrane laffichage de la totalit de larticle. Le script PHP zoom.php a cette mission : afficher une page HTML pouvant tre rfrence dans Google.

Appel de zoom.php depuis article.php


Expliquons la forme de cet appel qui sera bien sr rcrit la vole. /article/capital-non-libere-is-taux-maximum.html&src=Fiscalite-entreprise
/article, lors de requte sur Google de la forme site, permet de trier les pages articles

indexes. Nous avons dj abord cette astuce :


site:www.monsite.com inurl:article

93

Automatiser le rfrencement avec PHP et MySQL

capitalnonlibereistauxmaximum : deux usages de ce string.


j

Des mots-cls cohrents avec la page appele et avec la page appelante puisque par dnition, article.php affiche titre et chapeau au minimum du texte qui sera affich. On peut mme avoir un extrait du texte dune longueur de 0 50 caractres. On renforce le positionnement de ces deux pages, celle affiche par article.php et celle affiche par zoom.php. Ce string est unique. Il est propre cet article. Il nous sert donc de cl pour accder au bon enregistrement dans la table article.

&src=Fiscaliteentreprise : on ajoute un code, src dans cet exemple, contenant le nom

de la rubrique sous une forme permettant sa mise en URL. Ainsi on rcupre directement via lURL la rubrique do vient le clic. Cest pratique pour raliser un l de navigation mais hors sujet dans ce livre. On case aussi deux mots-cls cohrents et pertinents dans lURL, amliorant ainsi le positionnement.
RewriteRule ^([-_a-zA-Z0-9]+)/([-_a-zA-Z0-9]+).html&src=([-_a-zA-Z0-9]+)$ zoom.php?referencement=$1&url=$2&src=$3

LURL rcrite appelle zoom.php avec en argument referencement = le string de mots-cls, l URL permettant de rechercher larticle afficher dans la table article, et enn src = la rubrique dorigine du clic, permettant ainsi de grer un ventuel l de navigation.

Code source de zoom.php version simple


Voici la premire partie de ce code source. Il est autonome et fonctionnel. Une autre partie, la gestion du tags cloud, du nuage de liens, sera ajoute et documente dans le chapitre consacr aux backlinks internes un site :
<?php require_once("php_inc/MiseEnPage.inc.php"); require_once("php_inc/init.inc.php"); require_once("php_inc/biblio_inc.php"); if (isset($_GET["url"])) { $sql = "SELECT * FROM articles WHERE url=".$_GET["url"]." LIMIT 1;"; if ($request = mysql_query($sql)) {

94

Publication de pages dynamiques

if ($line = mysql_fetch_array($request)) { $title_page = $line["title"] ; $meta_description_content = $line["description"] ; // ce id article va nous permettre de grer laffichage // dinfo contextuelle dans la colonne de droite $id_Article = $line["id"] ; } } } MiseEnPage::haut($title_page,$meta_description_content,$rep); ?> <div id="sousban"> </div> <div id="pagegauchetete"> <?php MiseEnPage::MenuGauche() ; ?> </div> <!-- fin page gauche tete --> <div id="pagecentretete"> <!-- COLONNE DROITE --> <div id="pagedroite"> <?php MiseEnPage::ColDroite($id_Article) ; ?> </div> <!-- fin colonne droite --> <div id="pagetext"> <?php view_article($line); ?> <!--fin page texte --> </div> <!-- fin pagecentre --> </div> <?php MiseEnPage::bas() ; ?>

95

Automatiser le rfrencement avec PHP et MySQL

On rcupre les include PHP dont on a besoin : require_once();


require_once("php_inc/MiseEnPage.inc.php"); require_once("php_inc/init.inc.php"); require_once("php_inc/biblio_inc.php");

Si on a bien un paramtre URL pass par lappel zoom.php, on peut construire une requte SQL en charge de rcuprer larticle voulu dans la table article.
if (isset($_GET["url"])) { $sql = "SELECT * FROM articles WHERE url=".$_GET["url"]." LIMIT 1;"; if ($request = mysql_query($sql))

Dans lenregistrement article ainsi lu, on prend la valeur du title de page et on instancie la valeur du meta description content.
{ $title_page = $line["title"] ; $meta_description_content = $line["description"] ; $id_Article = $line["id"] ; } } } MiseEnPage::haut($title_page,$meta_description_content,$rep); ?>

On affiche tout le haut de la page. Ensuite, on passe laffichage du menu de gauche et de la colonne de droite. Le principe est identique article.php. Le ID de larticle permet dappeler une fonction PHP5 ColDroite() qui affiche le contenu de la colonne droite de notre page par rapport au numro ID de notre article.
<div id="sousban"> </div> <div id="pagegauchetete"> <?php MiseEnPage::MenuGauche() ; ?> </div> <!-- fin page gauche tete --> <div id="pagecentretete">

96

Publication de pages dynamiques

<!-- COLONNE DROITE --> <div id="pagedroite"> <?php MiseEnPage::ColDroite($id_Article) ; ?> </div> <!-- fin colonne droite -->

On peut afficher la totalit de larticle dans le conteneur DIV pagetext.


<div id="pagetext"> <?php view_article($line); ?> <!--fin page texte --> </div> <!-- fin pagecentre --> </div> <?php MiseEnPage::bas() ; ?>

La fonction PHP4 view_article($line), localise dans php_inc/biblio_inc.php, a en charge dafficher larticle pass en paramtre $line.

c Fig. 2.15 : Affichage dans centre de zoom.php par view_article($line)

97

Automatiser le rfrencement avec PHP et MySQL

Examinons son code source :


// affiche un article complet function view_article($line){ echo <div class="jcmb"> <div class="jcmbtitre"> . $line["titre"] . </div> <div class="jcmbparalarge"> <h2>. $line["chapeau"] .</h2> . $line["texte"] . </div> ; echo <div class="tavoirplus3"> <a href="index.php"> Revenir la page d\accueil</a> ... Article n . $line["id"] . paru le . $line["date-si"] . </div> ; echo </div>; // le div de fin de page article }

La mise en page est gre en CSS. Le chapeau est affich entre balises <h2>, le texte est affich tel quel, ce qui permet davoir du HTML dans le champ texte de la table article. Cest pratique mais dangereux. Les squences HTML doivent tre compltes et correctes sous peine daffecter laffichage de la page pour cause de balises non fermes, par exemple. Un lien permet de revenir la page daccueil.

2.7 Rsum
Nous avons un outil logiciel de publication darticles. La version que nous venons de voir est simple. Elle va subir quelques amliorations dans les chapitres venir. Notre logiciel est crit en PHP, il y a des syntaxe dappels de fonction en PHP4 et en PHP5. Il est bas sur une version standard de MySQL. Ce logiciel de publication automatise un minimum dactions de rfrencement : gestion automatises des title de page, des meta description, du chapeau en balises h2 dans zoom.php, dun titre en h1 dans article.php.

98

Rsum

Nous avons gr un cas de duplicate content assez courant : lappartenance dune page plusieurs URL distinctes, quelles soient l pour faciliter la navigation (classement de produits/articles par crateur, propritaire, date, etc.) ou parce quun mme produit/article peut appartenir plusieurs catgories distinctes.

99

3
3.1 Introduction .............................................. 3.2 Principe dun backlink .................................. 3.3 Principe du Page rank (PR) ............................. 3.4 Algorithme, nuages de liens et landing pages ...... 3.5 La formule "officielle" du Page rank ................... 3.6 Piloter la stratgie de rfrencement .................. 3.7 Rsum de ce chapitre ................................. 102 102 103 106 110 113 131

Page rank sculpting et backlinks


L
e PR sculpting est bas sur lutilisation des liens internes dans un site des ns de positionnement dans lindex de Google. On gre le ux de Page rank, on lassocie des mots-cls pertinents ; ainsi, on inuence le positionnement de certaines pages du site sur des mots-cls prcis dans Google. En franais, on traduirait Page rank sculpting par "positionnement par backlinks internes".

Page rank sculpting et backlinks

3.1 Introduction
Google a t le premier utiliser lexistence des liens naturels entre pages HTML pour valuer la pertinence dune page face une requte dinternaute. Lutilisation des backlinks pour le calcul du positionnement a t fondamentale dans le succs de Google. Dsormais, sans backlinks, impossible dtre positionn, quel que soit le moteur de recherche. Le codeur lisant ces lignes doit se dire :"Mais les backlinks sont issus dautres sites, cest du web marketing pur, je nai rien voir avec a". Rien de plus faux. Le codeur est impliqu de diffrentes manires dans les backlinks :
j

Le site doit avoir la capacit gnrer des nuages de liens internes. Nous verrons plus loin en dtail pourquoi. ce stade du livre, il suffit de savoir quun nuage de liens bien conu permet de mettre en avant certaines pages du site ddies des mots-cls, les landing pages, vers lindex de Google et de tenter ainsi dobtenir la meilleure place possible. Le site doit pouvoir changer aisment de critres on page. Un processus automatique serait le bienvenu. Exemple : lajout via back office dun mot-cl sur une page doit permettre de mettre jour automatiquement tous les critres de cette page ainsi que les ventuels nuages de liens. Ainsi, depuis une table MySQL ou depuis le back office du site, il sera possible de piloter la stratgie de rfrencement de tout le site.

3.2 Principe dun backlink


Un lien correctement cod comprend deux parties :
j j

LURL de la page vise par le lien : obligatoire. Le libell texte : il sera considr comme constitu de mots-cls.

Exemple : < a href=http://www.lesite.com/formation-webmestre-webmaster.html> Formation pour webmestres </a>

Ce libell de texte vhicule des mots-cls de la page de dpart, formation et webmestres, vers la page darrive. Dans le cas dune image la place du libell texte, le contenu de la balise ALT de cette image sera considr comme constitu de mots-cls.

102

Principe du Page rank (PR)

Le Page rank de la page de dpart a un effet de levier dmultipliant lefficacit de ce backlink. Plus le PR de la page de dpart est lev, plus la pousse sur le positionnement de la page sur les mots-cls du libell sera fort. Des scurits anti-fraude de Google peuvent nanmoins annuler le backlink. Pour viter de tomber sur ces scurits, il convient de ne pas construire un backlink nimporte comment. Nous reviendrons sur ce point un peu plus loin.

3.3 Principe du Page rank (PR)


Le Page rank, acronyme PR, est une mesure indiquant grossirement la popularit dune page selon la communaut des internautes. Google part du principe que plus on parle et donc plus on cite une page sur Internet, plus on mentionne son URL, plus cette page a un potentiel capable dintresser des internautes la recherche dinformations. Les internautes votent pour cette page. Google ausculte cette page et la lie dans son index quelques mots-cls, avec une forte prfrence pour ceux mentionns dans les libells des backlinks ayant attir son attention. Pour construire le Page rank, Google cartographie le web et analyse tout lien reliant deux pages entre elles. Tout lien transfre du Page rank dune page vers lautre. Tout lien ayant un libell transporte des mots-cls dune page une autre. Google mesure ceci, le pondre et calcule le PR dune page ainsi que le positionnement de ces pages sur des mots-cls. Le PR dune page sera donc fonction du volume de backlinks pointant vers elle ainsi que de la qualit de chacun dentre eux. La qualit dun backlink obit plusieurs critres diviss en deux familles :
j j

les critres quantitatifs ; les critres de cohrence.

Les critres quantitatifs dun backlink


Ce sont les critres les plus faciles mesurer :
j j

Le Page rank de la page. Il est approximativement indiqu par le champ PR de la Google bar. Le nombre de backlinks sortant vers des pages externes. Ces liens sortants, dont celui que nous analysons pour calculer le PR de la page que nous examinons, se partagent le pourcentage de Page rank allou aux liens sortants de toute page.

103

Page rank sculpting et backlinks

Le nombre de mots du libell du lien reliant cette page vers la page dont on est en train de calculer le PR. Ces mots se partage le Page rank, donc la pousse dans lindex. Plus il y a de mots, plus la pousse de chaque mot sera faible.

Les critres de cohrence dun backlink


Les mots-cls du libell doivent tre prsents sur la page de dpart et sur la page vise par le lien. Plus il y a de prsences de ces mots-cls sur ces deux pages, plus le lien est cohrent, assurant ainsi un transfert maximal de Page rank associ aux mots-cls du liens. Comment envisager une automatisation de liens cohrents de qualit ? Pour concevoir des algorithmes sur le sujet, il faut dabord cerner la problmatique et disposer daxes de rexion utilisables par un codeur. Pour cela, nous allons nous mettre la place dun apprenti moteur de recherche qui, justement, a lui aussi cette problmatique rsoudre. Ainsi, nous aurons des axes de rexion pour nos algorithmes. Pour valuer des backlinks, notre apprenti moteur de recherche a besoin de modliser le web. Il existe une manire trs simple issue de la thorie des graphes :
j j

Une page HTML est un sommet. Un lien entre 2 pages HTML est un arc entre ces 2 sommets.

Un site Internet est un ensemble de sommets. Chaque sommet est unique : il a une seule et unique URL. Pour les arcs (les liens), cest un peu plus compliqu. Dans le contexte Google, pour faire simple, il ne doit exister quun arc, lien, entre 2 sommets, 2 pages. En effet, un arc peut partir dun sommet (page) P1 unique, aller vers un autre sommet P2 unique. Mais on peut avoir ainsi plusieurs liens reliant une page P1 une page P2 au gr des besoins du webmestre pour faire passer des internautes dune page une autre. Le moteur face deux liens ou plus, partant dune mme page P1 et pointant une mme page P2 aura un seul comportement : il slectionnera un lien unique et ignorera les autres. Nous avons deux objets : sommet et arc. Dotons-les de proprits.

Proprits dun backlink (un arc)


Un lien (un arc) peut tre quip dune structure de proprits comme celle-ci :
j j

URL de la page de dpart ; URL de la page darrive ;

104

Principe du Page rank (PR)

j j

texte du libell du lien dcompos mot par mot ; dates o ce lien a t dtect par le moteur la premire fois, la dernire fois, etc.

Proprits dune page (un sommet)


chaque sommet, on peut associer une structure de proprits. Traduit en Web, cela donne toute page HTML une liste de proprits dcrite par une structure :
j j j j j j j

URL ; Page rank ; TITLE de la page ;


META DESCRIPTION ;

premier texte entre balises <h1> ; premier texte en balise ALT dune premire image ; texte n1 entre balise <p> ou quivalent, etc.

Calculer une cohrence


Nous avons des structures, des objets, des proprits, des valeurs. Tout bon codeur voit immdiatement ce que lon peut en faire. Il est ais de mettre au point un algorithme capable de calculer une cohrence dun lien entre 2 pages. Un exemple simple : Est-ce que le mot prsent dans un libell de lien est prsent dans ces critres de la page de dpart ?
j j j

Dans le TITLE ? Autrement, on minore le transfert de Page rank de 20 %. Dans un titre H1 ? Autrement, on minore le transfert de Page rank de 10 %. Dans deux titres H1 ? Si cest le cas, on majore le transfert de Page rank de 5 % par titre H1 offrant ce mot-cl, etc.

On fait la mme chose avec la page darrive. Au nal, notre apprenti moteur de recherche arrive calculer un transfert de Page rank via un lien entre deux pages. Il suffit dadapter cet algorithme nos besoins.

Algorithme de cohrence
Plus la cohrence est bonne, plus la qualit du backlink est satisfaisante. Pour assurer une bonne cohrence, les mots-cls prsents dans le libell de texte du lien doivent tre rpartis sur lensemble des deux pages. Mais il ne faut pas tomber dans le spamdexing : multiplier les mots-cls partout en grand volume. Cela constituerait une

105

Page rank sculpting et backlinks

anomalie statistique ; il y aurait trop de densit. On peut appeler cela une optimisation trop agressive. Elle pourrait entraner une dsindexation de la page par Google. Nous tenons notre approche pour concevoir un algorithme capable de gnrer un nuage de liens. Cette base de rexion pourra tre perfectionne au l du temps et de ses acquisitions de connaissances par chaque lecteur. En valuant les mots-cls de deux pages, on peut valuer si un backlink compos de mots-cls pourrait les relier. Cest un bon dbut mais insuffisant. Il va falloir complter cette base dalgorithme avant de pouvoir passer un premier codage.

3.4 Algorithme, nuages de liens et landing pages


Le principe est le suivant : Notre bauche dalgorithme vue prcdemment peut tirer des liens cohrents entre pages du site. Exemple : toutes les pages traitant du chocolat sous toutes les formes possibles dans un site de recettes de cuisine sont interconnectes par le mme nuage de liens titr ainsi : Toutes nos recettes base de Chocolat. Sous le couvert de cette assistance la navigation contextuelle sur le site, le codeur rfrenceur peut mettre en place une architecture pour manipuler les transferts de Page rank et les leviers sur les mots-cls associs. Plusieurs formes de transferts de PR sont possibles. En voici quelques-unes :
j j

quitable : le Page rank boucle entre les pages dun mme thme. Ce qui sort par un lien dune page reviendra via un autre lien. 20:1 20 pages dun mme thme sont interconnectes par le mme nuages de liens prsent sur chacune dentre elles. Chaque page a en plus de son nuage, un lien en dur vers une page spciale : la landing page. Cette page na pas de nuages de liens vers ces 20 pages. Donc elle reoit beaucoup et donne moins. Cette landing page se retrouvera donc trs favorise par rapport aux autres pages de mme thme, sur ses mots-cls, face aux algorithmes de Google. Une combinaison des deux prcdentes formes. Une forme sert lisser et moyenner le Page rank entre pages de mme thmatique. On sait ainsi sur quoi tabler. Les anomalies de PR par Page sont ainsi partiellement corriges car lisses entre ces pages. Lautre forme de transfert sert favoriser une page au dtriment des autres pages.

Dans un nuage de liens, chaque lien pousse de un quelques mots-cls. Comme les pages dans un nuage bien conu sont de la mme thmatique, la cohrence est en gnral plutt

106

Algorithme, nuages de liens et landing pages

bonne entre la page de dpart de chaque lien et sa page darrive. Lefficacit du backlink est donc maximale. Le Page rank ne se perd pas et circule entre les pages du site. La page cible par toutes les pages de mme thme est appele landing page, page datterrissage. Elle est ddie, comme les autres pages du site, une ou quelques expressions cls. Ladministration dun nuage de liens ciblant une expression cl permet de slectionner la page datterrissage dune expression cl. terme, cette page sera la page mise en avant en premier par Google sur cette expression cl prcise. Nous en dduisons les critres dune bonne landing page :
j j j

Elle doit tre de prfrence en haut de la hirarchie de navigation. Elle a un menu de navigation. Son URL appartient un menu de navigation du site. Cela favorise la diffusion du PR rerout vers cette page
Trop de liens tuent le nuage

La formule du Page rank est dtaille plus loin. Un mcanisme de cette formule limite lefficacit dun nuage de liens si celui-ci a trop de liens. Un nombre de 15 20 liens constitue une premire limite maximale pour un nuage de liens.

Algorithmes : Automatiser les liens dun nuage


Les diffrents algorithmes automatisant un nuage de liens pour chaque page dun site peuvent tre plus ou moins complexes et lourds mettre en place. Pour amliorer et simplier la mise en place de notre futur programme, augmenter la porte et maximiser lefficacit de nos algorithmes, il serait bon de mettre en place un cadre de travail. Par convention, les mots utiliss dans le title de la page, critre le plus important dune page pour son rfrencement, seront tous considrs comme mots-cls stratgiques pour la page. Cela implique que ces mots-cls seront bien prsents dans les diffrents autres critres de la page. On pourra dailleurs, via un algorithme de mise en page, sassurer dun minimum de ralisation ce niveau (exemple : afficher en H2 les mots-cls du title de page quelque part sur la page).

107

Page rank sculpting et backlinks

Renforcer la cohrence.
Le contenu et la mise en page du texte affich peuvent tre insuffisamment optimiss pour les besoins du site. Quelques astuces permettent de limiter les dgts. Afficher en H2 dans un coin de la page le contenu du title de page permet dassurer ou de renforcer une cohrence. Afficher dans une partie de la page en H1 le contenu du champ expression_clef de la table article renforce la cohrence de manire encore plus prcise. Dernier point et non des moindres : pour viter de trop forcer sur la densit et donc risquer de faire ainsi du spamdexing, le volume de texte dune telle page doit tre dun minimum de quelques centaines de mots.

Notre algorithme va oprer ainsi :


j j j

Une table contient les expressions cls du site. Exemple dune expression cl pour notre exemple : cration dentreprise. On cherche toute page contenant cette expression cl dans son title. On obtient une liste. On interconnecte les 20 premires pages de cette liste par un nuage de liens.

Une ligne de code pourrait afficher par dfaut en H2 le contenu du champ expression_clef. Nous allons vite rencontrer de nombreux problmes de mise en uvre. O et comment afficher en H2 le champ expression_clef ? Cela implique que ds la conception du site, ce champ soit pris en compte. Il pourrait tre utilis comme titre du nuage de lien. Avoir une liste de 20 backlinks ayant tous pour libell cration dentreprises nest gure pratique prsenter sur chaque page, et cela nous entranerait dans un spamdexing de 20 mots-cls sur les 20 pages du nuage de liens. Il faut changer cela. Pour chaque lien, le libell du backlink pourrait tre le title de page, tout simplement. Un nuage de 20 liens nest gure pratique afficher. Le plus simple consiste crer une zone rserve au nuage de liens dans la page, ainsi quun conteneur XHTML/CSS destin en grer laffichage. Le bas de la page est une des possibilits o lon pourrait poser ce conteneur XHTML/CSS.
Duplicate content tue les nuages de liens
Trop de nuages de liens identiques sont prsents sur diffrentes pages. Pass un seuil, une page peut tre dsindexe. Tous ses liens sont ignors, le PR de la page est perdu et un trou apparat dans la stratgie de rfrencement. Une astuce consiste ne pas afficher les liens du nuage dans le mme ordre.

108

Algorithme, nuages de liens et landing pages

Au-del dune trentaine de caractres, deux chanes de caractres identiques peuvent entrer en conit de duplicate content vis--vis de Google. Notre nuage de liens repique le contenu du title de la page de destination et on retrouve cette chane de caractres rpte jusqu 20 fois ou plus dans autant de pages. Pour liminer les risques trop levs de duplicate content, plusieurs approches complmentaires sont mettre en uvre an de "casser" la dtection :
j j j

Ne pas afficher les liens dans le mme ordre chaque fois. Limiter le nombre de caractres dun libell de lien de manire en avoir moins de 35. Afficher de manire alatoire un segment de N caractres conscutifs du libell du lien. Si le texte de lien, issu donc du title de la page de destination, fait 80 caractres de long, on en affiche 45 alatoirement quon extrait dun seul bloc. On limite ainsi les longueurs et le volume de duplicate content des title de liens Il faut sassurer que lexpression cl pousser est prsente dans le bloc retenu. Nous lvoquons ci-aprs.

Limiter le nombre de mots peut entraner llimination de notre expression cl. Il faudra donc sassurer de sa prsence dans laffichage du libell. On peut afficher les mots environnant notre expression cl, ou uniquement les 4 5 premiers mots-cls. Et sils ne sont pas prsents, on prxe lextrait du title de page par le contenu du champ expression_clef "Cration dentreprise : " et on affiche un extrait de 2 4 mots-cls maximum. Tout codeur pourra imaginer sa propre solution ce problme.
Plus de 20 liens en nuage pose de gros problmes
On peut percevoir ici quil vaut mieux se limiter une vingtaine de liens en nuage sur une expression cl donne. Passer plus entranerait le codeur rfrenceur vers des limites. Soit on commence saccrocher dans des duplicate contents cause de la rptition de la mme string sur trop de page ; soit on expose des pages du spamdexing. En tentant dloigner ces risques, on diminue la cohrence et la prsence de lexpression cl. Enn, trop de liens tuent les liens pour cause de trop de dispersion du Page rank. Il faudra passer dautres algorithmes de nuages de liens pour grer au mieux les ux de Page rank sur une expression cl stratgique sur laquelle on veut focaliser plus de 20 backlinks internes.

Nous venons de voir un algorithme de nuage de liens entre les pages. Il reste y intgrer le lien vers la landing page.

109

Page rank sculpting et backlinks

Nous disposons dune table o sont stockes les expressions cls exprimant la stratgie de notre site. chaque expression cl, associons une URL en dur, celle de la landing page. Cette URL et un court texte associ comme libell de lien seront affich au mme endroit que le nuage de liens.
Pige, le temps et lobsolescence des liens
Les pages interconnectes voluent mais pas les backlink avec leurs libells. Ils deviennent donc incohrents au l du temps et Google les invalide. En automatisant les nuages de liens, on vite ce pige. Les liens se recalculent rgulirement. Ils restent ainsi jour.

3.5 La formule "officielle" du Page rank


Cette formule a t publie en 1998 et na jamais fait lobjet dune mise jour par Google depuis. plusieurs reprises, Google a indiqu que le Page rank tait toujours dactualit et quil constituait une brique fondamentale de sa stratgie. Sans aucun doute, la formule du Page rank a t modie et adapte au Web du XXIe sicle. Mais peu importe, le concept reste dactualit. Ce qui compte pour le codeur rfrenceur est den comprendre les principes an de pouvoir apprhender comment lutiliser le plus efficacement possible. Sans documentation officielle de Google, il ne sert rien de polmiquer autour de la prcision des calculs et des formules. Une page A reoit des liens mis par les pages T1 Tn. Le paramtre d est un facteur damortissement pouvant tre ajust entre 0 et 1. Historiquement, en 1998, d a la valeur 0,85. Ce paramtre d a plusieurs utilits. C(A) est dni comme le nombre de liens mis par la page A ; ce sont donc les liens sortants. Le Page rank de la page A est dni comme suit :
PR(A) = (1d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))
Tableau 3.1 : Formule du Page rank Composant de la formule PR(A) PR(Tn) Description Le Page rank de la page A. Celui que nous voulons calculer Le Page rank de la page Tn. Les pages T, de 1 n, ont chacune un lien pointant vers notre page A.

110

La formule "officielle" du Page rank

Tableau 3.1 : Formule du Page rank C(Tn) Le nombre de liens sortant de la page Tn. Chaque page T a plusieurs liens, enn au moins un, celui qui pointe vers la page A. C(Tn) comptabilise le nombre de liens sortants qui vont devoir se partager, parts gales, une partie du PR allou aux liens sortants. Coefficient damortissement. d est considr gal 0,85. Une astuce pour inuencer la convergence

D (1 d)

Le Page rank est affich dans la barre doutils Google pour Firefox ou Microsoft IE. Lchelle du Page rank est logarithmique. Cette formule volue probablement au l du temps et des mises jour par Google de ses algorithmes. Voici une chelle approximativement correcte. Limportant est de comprendre la tendance et den matriser les consquences. Prenons une chelle logarithmique de base 10 pour simplier nos calculs et bien illustrer notre propos.
Tableau 3.2 : Page rank affich et calcul PR affich (log base 10) PR 0 PR 1 PR 2 PR 3 PR 4 etc. Page rank "rel", calcul quelques dcimales prs, exprim sans log 0 1 10 100 1000 PR < 1 PR < 10 PR < 100 PR < 1000 PR < 10000

Chaque niveau de Page rank est 10 fois plus lev que le niveau prcdent. Exprim simplement, il faut 10 fois plus de travail et de backlinks vers une page pour passer de PR4 PR5 que pour passer de PR3 PR4. Pour tre plus prcis : il faut 10 fois plus de PR transfr via les backlinks pour passer du niveau PR4 PR5 que pour passer de PR3 PR4.

111

Page rank sculpting et backlinks

Non seulement le volume de backlinks compte, mais aussi leurs qualits prenant en compte la cohrence. La formule du PR de Google est rcursive. Le calcul de PR en cours a un impact sur les PR des autres pages utilises pour calculer le PR de notre page. Il faut donc le refaire, ce qui modie nouveau le rsultat, etc. Pour obtenir un rsultat juste, il faudrait attendre que le rsultat converge vers une valeur peu prs stable. Nous venons de voir une des raisons expliquant pourquoi Google met jour la petite barre verte seulement quelquefois par an. Il est inutile de la publier trop souvent, cela reprsenterait un travail important en mises jour pour une volution faible. Une mise jour de la barre verte de la Google bar quelques fois par an est suffisante.
j

Premire consquence de cette formule : si un site nvolue pas, son PR se dgrade au l du temps. En effet, le nombre de pages dans Internet augmentant continuellement, le nombre de liens C(Tn) aura tendance augmenter et le PR transfr depuis chaque page Tn diminuera. Deuxime consquence : le volume de backlinks depuis des pages faible PR ou depuis des pages surcharges de backlinks entrane beaucoup de travail pour un faible rsultat. Tant qu investir du temps, autant en investir une partie dans des backlinks de qualit : bon PR, rel contenu, peu de backlinks externes. Troisime consquence : Google na nul besoin de disposer des PR de toutes les pages. En itrant plusieurs fois le calcul, chaque itration fait converger le PR vers la valeur nale juste. En attendant, il peut prendre une valeur intermdiaire nayant pas ni de converger ou une valeur de 0.

Dtaillons le fonctionnement. Les pages Tn ont chacune un lien pointant vers notre page A. Peu importe si nous navons pas encore toutes les pages Tn et si le Page rank de certaines de ces pages nest pas encore nalis. En effet, imaginons un cas simple et fort courant : une boucle dans les liens. La formule est itre une premire fois, le lien de A vers B vient juste dtre cartographi. Une fraction du Page rank passe de la page A la page B. La formule est itre une nouvelle fois. Les calculs prennent en compte le nouveau PR de B. En quelques itrations, le PR de chaque page va converger vers sa valeur nale. Nous explorerons les consquences de cette formule pour le rfrenceur :
j j

Google lutilise pour lutter contre le spam de backlinks. Comment exploiter le Page Rank de manire optimale pour obtenir un bon positionnement sur les mots-cls stratgiques des pages dun site web ?

112

Piloter la stratgie de rfrencement

3.6 Piloter la stratgie de rfrencement


Piloter la stratgie de rfrencement naturelle du site consiste slectionner chaque expression cl ncessaire au site et lassocier un groupe de pages existantes, an de pousser en avant une page prcise ddie cette expression cl. Exprim autrement, une expression cl stratgique donne :
j

On doit associer les pages existantes ayant cette expression cl dans leurs title de page puis on doit interconnecter ces pages existantes entre elles via un nuage de liens renforant le rfrencement de ces pages les unes les autres. Dans chaque nuage de lien plac dans ces pages associes, on place un backlink vers la landing page (page datterrissage) ddie cette expression cl.

Nous allons mettre en place lalgorithme de gnration de nuage de liens sur notre site web exemple. En mme temps, tout en administrant le fonctionnement de cet algorithme, nous piloterons la stratgie de rfrencement naturelle de notre site. Rappelez-vous, un script article.php affiche une liste de rsultats. En cas de clic sur un rsultat prcis, un script zoom.php affiche le dtail de larticle ainsi slectionn. Le nuage de liens sera donc placer en bas de chaque page affiche par zoom.php. Regardons le code source et lalgorithme dans le dtail. Notre code source de zoom .php vu dans les pages prcdentes se terminait ainsi :
<?php view_article($line); ?> <!--fin page texte --> </div> <!-- fin pagecentre --> </div> <?php $map = MiseEnPage::bas() ; ?>

Aprs lappel la fonction view_article($line); et avant la n de la page, il va falloir insrer le code grant le nuage de liens.

113

Page rank sculpting et backlinks

Administrer les nuages de liens


Le gnrateur de nuages de liens a besoin de diverses informations : j Quelles sont les expressions cls prsentes en title de page prendre en compte ? j Quelle est la landing page de chaque expression cl ? Sur notre site web exemple, nous devons crer un nuage de liens pour toute page ayant une variante dexpression cl de cration dentreprise. Il faut interconnecter jusqu 20 pages maximum avec un nuage de liens en vitant les piges lis au duplicate content. La table suivante, expressions_cls, ne pas confondre avec le champ expression_clef de la table article, va nous permettre de grer les diffrentes expressions cls dclines depuis cration dentreprise et reprise entreprise :
--- Structure de la table expressions_clefs -CREATE TABLE expressions_clefs ( id int(11) NOT NULL auto_increment, expression varchar(128) NOT NULL, landingURL varchar(256) NOT NULL COMMENT optionnel - url en dur vise par expression, KEY id (id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ; --- Contenu de la table expressions_clefs -INSERT INTO expressions_clefs (id, expression, landingURL) VALUES (1, creation entreprise, creation-reprise-entreprise.php), (2, reprise entreprise, creation-reprise-entreprise.php), (3, creation d entreprise, creation-reprise-entreprise.php), (4, creation dentreprise, creation-reprise-entreprise.php);

En effet, plusieurs variantes sont possibles autour de cette expression cl Cration


dentreprise.

Nous retenons lapproche simpliste mais aise comprendre de saisir en table chaque variante. Une autre approche plus sophistique aurait consiste identier la prsence de ces 2 mots dans le title.

114

Piloter la stratgie de rfrencement

Les avantages et inconvnients des deux approches sont opposs. Une ligne par variante dune expression cl dans la table permet davoir de multiples nuages de 20 liens maximum sur des expressions cls voisines : cration entreprise, cration dentreprise, etc. On augmente ainsi la volumtrie des liens internes. Les inconvnients :
j j

Risque de quelques duplicate contents involontaires mais de faible ampleur sur quelques pages. Travail fastidieux. Il faut penser toutes les variantes possibles.
Conversion des 2 strings

On peut diminuer ce travail fastidieux de recherche de variantes dune expression cl en convertissant les 2 strings lors des comparaisons an de les mettre sur un mme jeu de caractres via la fonction html_entity_decode() qui convertit toutes les entits HTML en caractres normaux. On vitera ainsi de comparer , son pendant HTML, par exemple, et davoir une erreur de comparaison.

On peut aussi les convertir en caractres non accentus et ainsi simplier encore plus les comparaisons et les variantes. Nous verrons cela dans le code source. Dans notre exemple, nous prfrerons la premire solution, un enregistrement par variante de lexpression cl. Cette approche est porteuse de plus dvolution et dadaptabilit grce la possibilit de grer plus de nuages de liens autour des diffrentes dclinaisons dune expression cl.

viter que notre site web ne scroule


Est-il envisageable de construire le nuage de liens chaque affichage dune page par zoom.php ? La construction de chaque nuage de liens ncessite de trs nombreux accs la base de donnes. Cela pnalise les temps de rponse et surcharge notre serveur. Lajout darticle dans la base nest pas une opration trs frquente. Labsence de quelques articles durant quelques heures, dans les nuages de liens, nest pas critique. Il nous faut donc construire les nuages de liens pour chaque priode de 24 heures. Ainsi, on ne va pas refaire le mme calcul chaque demande de page. Ce calcul est effectu une fois et on stocke le rsultat dans une table quon interrogera chaque affichage de page via zoom.php.

115

Page rank sculpting et backlinks

Un programme dont le lancement est automatique, un batch dans le jargon des informaticiens, utilisera donc les tables MySQL pour construire dans une table ddie, exp_clef_dynamique, le nuage de chaque page. Ainsi pour afficher le nuage de liens, il suffira dinterroger cette table. En un seul accs MySQL, on obtiendra les informations permettant de gnrer le nuage de liens. En temps rel, sans la prconstruction de tous les nuages en batch, chaque affichage de page impliquerait un traitement incluant des dizaines, voire des centaines de requtes SQL ; notre serveur web se serait effondr rapidement.

Prconstruire les nuages de liens


Voici lexportation de la table exp_clef_dynamique :
--- Structure de la table exp_clef_dynamique -CREATE TABLE exp_clef_dynamique ( id int(11) NOT NULL auto_increment, id_article int(11) NOT NULL, libelle_BL varchar(128) NOT NULL, id_article_cible int(11) NOT NULL, UNIQUE KEY id (id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=48 ;

Chaque affichage par zoom.php affiche un article unique identi par une cl unique : ID de la table article. La table exp_clef_dynamique contiendra lID article de la page o poser un backlink du nuage de liens. Chaque backlink poser est dcrit sous la forme dun ID article, le champ id_article_cible, et du libell texte de ce backlink, libelle_BL. Un nuage de liens est donc un ensemble de triplets (id_article, libelle_BL, id_article_cible) dont le id_article est identique. Cest le script PHP batch_exp-clef_dynamique.php qui va remplir cette table des nuages de liens construire. Ce programme peut tre lanc une fois par jour ou plus, automatiquement ou manuellement. Une autre table est remplie par ce mme script PHP : landing_pages_id_article_url :
--- Structure de la table landing_pages_id_article_url -CREATE TABLE landing_pages_id_article_url ( id int(11) NOT NULL auto_increment,

116

Piloter la stratgie de rfrencement

id_article int(11) NOT NULL, libelle_lien varchar(255) NOT NULL, url_lien varchar(255) NOT NULL, PRIMARY KEY (id), KEY id_article (id_article) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;

Chaque nuage de liens pos sur une page contiendra un backlink vers une landing page. Cette table va nous permettre de grer cela. Via chaque ID dun article, depuis le script zoom.php, on pourra afficher dans le nuage de liens ce backlink avec le libell libelle_lien qui pointera vers la page url_lien. Examinons le code source du script PHP batch_exp-clef_dynamique.php :
require_once("php_inc/MiseEnPage.inc.php"); require_once("php_inc/init.inc.php"); require_once("php_inc/biblio_inc.php"); ?> <h1>gestion dynamique des expressions clefs entre pages articles</h1> <?php // vider la table que lon va reconstruire // les liens en nuage $table = "exp_clef_dynamique" ; $sql = "TRUNCATE TABLE " . $table . " ;" ; $id_global = 1 ; // sera le ID de chaque enregistrement // dans table exp_clef_dynamique $id_landing_page = 1; // sera le ID de chaque row // dans la table // landing_pages_id_article_url if (!($request = mysql_query($sql) ) ) { echo erreur : table . $table . :: impossible de vider la table <br /> ; exit ; } echo info : table . $table . :: vide <br /><br /><br /> ; // vider la table que lon va reconstruire : // la landing page de chaque nuage $table = "landing_pages_id_article_url" ; $sql = "TRUNCATE TABLE " . $table . " ;" ; if (!($request = mysql_query($sql) ) ) {

117

Page rank sculpting et backlinks

echo erreur : table . $table . :: impossible de vider la table <br /> ; exit ; } echo info : table . $table . :: vide <br /><br /><br />;

On dnit les bibliothques de fonctions via des classiques require_once. Pour suivre la construction des tables et permettre tout dbogage, on affichera des informations sur une page HTML via de classiques echo ou print dans le script PHP. $id_global et $id_landing_page seront les ID respectifs de chaque enregistrement que nous allons crire avec le batch batch_exp-clef_dynamique.php dans les deux tables exp_clef_dynamique et landing_pages_id_article_url. On vide les tables exp_clef_dynamique et landing_pages_id_article_url puisque le batch doit les reconstruire compltement toutes les deux.

Boucle de niveau 1
Traiter chaque expression cl pour essayer de mettre en nuage :
$sql = "select * from expressions_clefs ;" ; if ($request = mysql_query($sql)) // on a toutes les exp clef de expressions_clefs explorer { while ($line = mysql_fetch_array($request)) // boucle niveau 1 { $expression = $line["expression"] ; $url_lien = $line["landingURL"] ; $sql = "select * from articles ;" ; if ( !($request2 = mysql_query($sql)) die(Erreur SQL !.$sql. .mysql_error());

On rcupre chaque expression cl depuis la table expressions_clefs. Pour chacune delles, on va essayer de trouver une page o dposer le nuage et toutes les pages affichant un article qui seraient cohrentes avec notre lien et la page de dpart. Pour chaque expression, on met de ct les informations an de construire un lien vers la landing page de lexpression cl. Ces informations sont : j Le libell du lien. Ici, nous prendrons lexpression cl elle-mme : $expression. j LURL du lien : $url_lien. Nous avons de quoi construire le lien sous la forme <a href="$url_lien "> $expression </a>.

118

Piloter la stratgie de rfrencement

Boucle de niveau 2
Recherche dune page dont le title possde une sous-chane (substring) correspondant lexpression cl, pouvant donc recevoir un nuage de liens :
// boucle niveau 2 while ($line_article = mysql_fetch_array($request2)) { $id_article = $line_article["id"] ; $s = $line_article["title"] ; $s_nohtml = html_entity_decode($s) ; // plus de HTML, on passe tout en iso standard basique $expression_nohtml = html_entity_decode($expression); $s_noAccent = strtr($s_nohtml, v Y, U AAAAAACEEEEEIIIINOOOOOUUUUY); $s_noAccent = strtr($s_noAccent, yy, aaaaaaceeeeiiiinooooouuuuyy); // du pur ascii 7bit - on simplifie les comparaisons $expression_noAccent = strtr($expression_nohtml, v Y, U AAAAAACEEEEEIIIINOOOOOUUUUY); $expression_noAccent = strtr($expression_noAccent, yy, aaaaaaceeeeiiiinooooouuuuyy); // on cherche expression clef dans title : oui ou non. if (stristr( $s_noAccent, $expression_noAccent ) ) { // si oui, on repre cet article son id), // on construit libell de lien puis faut chercher // tous les autres articles viser // on trace ce qui se passe pratique pour le debug // et pour comprendre echo boucle niv DEUX 2 : <b> . $expression_noAccent . </b> est inclus dans cette string ==>> <i> . $s_noAccent . </i> <br> ; // on construit le BL $id_depart = $line_article["id"] ;

119

Page rank sculpting et backlinks

// maintenant il faut lister tous les // ID articles cibler $sql = "select * from articles ;" ; if ($request3 = mysql_query($sql)) { // on commence par le lien vers la landing page $libelle_lien = $expression ; $sql2 = "INSERT INTO landing_pages_id_article_url VALUES($id_landing_page,$id_article, $libelle_lien , $url_lien) " ; mysql_query($sql2) or die(Erreur SQL !.$sql. .mysql_error()); echo <br /> article n . $id_article . . $libelle_lien . ===>>>> . $url_lien . <br /> ; $id_landing_page++ ; $compteur_BL = 0 ; // on compte le nombre de BL que lon va mettre dans // la table exp_clef_dynamique pour CE nuage de liens. // On ne dpasse pas 20

Pour chaque enregistrement dun article (la vue $line_article) :


j j j j j j

On rcupre son ID. Il nous sera ncessaire au cas o la page serait en adquation avec notre recherche sur le title. On rcupre son title de page dans la variable string $s. On transforme le title et lexpression en texte iso sans code HTML (ou un sexprime par exemple) via la fonction html_entity_decode. On limine tous les caractres accentus via la fonction strtr(). On recherche dans la chane (variable string $s_noAccent) contenant le title la sous-chane $expression_noAccent. Sil y a prsence de lexpression cl dans le title de la page affiche via zoom.php, on a une page o poser notre futur nuage de liens.

Pourquoi transformer en caractres latins basiques les contenus de la chane (le title de page) et de la sous-chane (lexpression cl chercher dans le title de page) ? Pour simplier la gestion du rfrencement et abiliser nos comparaisons. Il existe de multiples dclinaison autour dune expression cl comme cration entreprise.

120

Piloter la stratgie de rfrencement

Cration entreprises/creation entreprise/cration dentreprise/crtion entreprise/, etc. Avec accent, au pluriel, en mode HTML, de nombreuses variantes

existent. En liminant tout code HTML et toute prsence daccent, on simplie plusieurs choses :
j

La saisie imposer dans le title et les tests lis dans le script PHP. Peu importe dsormais que ce soit saisi en HTML ou non. La prsence des caractres accentus importe peu galement. Le traitement appliqu nous dbarrasse de ces problmes. Nos comparaisons fonctionneront. Ladministrateur de la table expression na plus qu se proccuper des variantes de texte : prsence ou non dun d avec apostrophe, sans apostrophe, cration au pluriel ou au singulier, etc.

Lautre point concernant lordre des oprations porte sur la abilit et la prennit de cette squence de code. Deux problmatiques sont rgler :
j

Il existe une multitude de jeux de caractres lis Internet ou non : sur 8 bits, 16 bits, 32 bits. En les recodant dans une police latine, on se dbarrasse de toutes les manires diffrentes de coder un mme caractre. La deuxime problmatique porte sur les accents. Un mme mot peut tre orthographi avec des caractres accentus divers, justes ou errons. La transformation de tout caractre accentu vers sa version non accentue abilise et simplie le travail de comparaison.

Revenons notre code source. Nous avons identi un article o poser un nuage de liens. Il nous faut tracer son ID darticle : la page de dpart de chaque lien du nuage. Il nous faut maintenant identier tous les liens poser dans le nuage dans une boucle de niveau 3. Nous prparerons cette boucle sur la table article. On charge tous les articles de la table article pour prparer la recherche, cohrence oblige, dautres articles ayant cette mme expression cl dans le title de page affiche par zoom.php. Pour dbuter, on insre dans la table landing_pages_id_article_url les informations qui nous permettront de coder la vole le lien vers la landing page de lexpression cl :
$id_landing_page : lID unique de chaque enregistrement de cette table ; $id_article : lID de larticle o poser le lien ; j $libelle_lien : le libell du lien ; j $url_lien : lURL de la landing page. j $compteur_BL. On doit limiter une vingtaine le nombre de liens dans un nuage. Ce
j j

compteur va nous aider contrler le nombre de liens lors de la construction la

121

Page rank sculpting et backlinks

vole du nuage. Dans une version amliore, les ventuels enregistrements darticles restant dans la vue en cours de traitement et compatibles avec lexpression cl pourraient tre utiliss pour un autre nuage. Dans le cadre de cet exemple, nous nous contenterons du progrs dj notable davoir un seul nuage de liens pour mettre en landing page une expression cl prcise.

Boucle de niveau 3
On parcourt les enregistrements de la vue et on compare lexpression la chane title de chaque enregistrement, comme dans la boucle de niveau 2 :
// boucle niveau 3 - gnration du nuage de liens // pour larticle id_depart while ($line_article_cible=mysql_fetch_array($request3)) { $s0_nohtml = html_entity_decode($line_article_cible["title"]) ; $s0_noAccent = strtr($s0_nohtml, v Y, U AAAAAACEEEEEIIIINOOOOOUUUUY); $s0_noAccent = strtr($s0_noAccent, yy, aaaaaaceeeeiiiinooooouuuuyy); if (stristr($s0_noAccent, $expression_noAccent) ) { // il faut entrer une ligne dans la table // expressions clef dynamiques echo boucle niv TROIS 3 : . $expression_noAccent . est inclus dans cette string ==>> . $line_article_cible["title"] . <br> ; $libelle_final = $line_article_cible["title"] ; $compteur_BL++ ; echo $compteur_BL . me de ce nuage de liens BL==>> . $libelle_final . <<== . ID cible = . $line_article_cible["id"] . <br> ; $cible = $line_article_cible["id"] ; $id_global++ ; $sql2 = "INSERT INTO exp_clef_dynamique VALUES($id_global , $id_depart,

122

Piloter la stratgie de rfrencement

// /:

//

$libelle_final , $cible) " ; if ($line_article["id"]==$line_article_cible["id"]) si on ne pointe pas sur la mme page de dpart / arrive le BL est ok, on peut linsrer { echo **** boucle sur lui-mme - pas de BL . $line_article["id"] . == . $line_article_cible["id"] . <br /> ; } else // on insre le BL gnrer ds la table { if ($compteur_BL <21) nuage de liens ne doit pas dpasser 20 { mysql_query($sql2) or die(Erreur SQL !.$sql. .mysql_error()); } else { echo <br /> Nuage de liens satur 20 max<br />; } } } }

chaque enregistrement compatible avec notre expression cl, on rcupre les informations ncessaires la construction du lien. On va les insrer dans la table exp_clef_dynamique :
j j j

$id_global : lID de chaque enregistrement de cette table. On lincrmente chaque

insertion dans la table. $id_depart : cette variable a t instancie dans la boucle 2. Cest lID de la page de dpart du nuage de liens. $libelle_final : on rcupre le title de la page cible qui sera donc le libell de notre lien vers elle. Difficile de faire plus cohrent. Mais cette prcision nous limite une vingtaine de liens maximum dans un nuage pour une expression cl prcise. $cible : cest lID de la page cible. Grce lui, on pourra construire lURL vers la page.

123

Page rank sculpting et backlinks

Si les deux ID article et ID article cible sont identiques, on est en fait sur la page de dpart dont le title contient bien sr lexpression cl. On ne la traite pas. Si $compteur_BL atteint 21, on arrte dinsrer des liens pour ce nuage. Une amlioration future serait mettre en place ici pour crer un nouveau nuage de liens qui aurait pour objectif dutiliser un seul mot-cl composant lexpression cl en cours. Cest un excellent exercice faire pour mettre en uvre et amliorer ce que vous apprenez dans ce livre. Ci-aprs, on ferme proprement les accolades et la n de la page HTML affichant les messages de suivi de la construction des deux tables.
} } } } } echo <br><br> == fin du batch == ; ?> </body> </html>

Nous allons maintenant analyser le code source de zoom.php. Nous avons dj vu le code source de la version sans gestion des nuages de liens au chapitre prcdent ? Nous allons revisiter ce script avec cet ajout.

Afficher un nuage de liens : zoom.php


Nous avons modi le script PHP zoom.php an de mettre en service laffichage du nuage de liens. Les liens afficher sont contenus dans deux tables distinctes :
j j

La table landing_pages_id_article_url contient le backlink pointant vers la landing page cible. La table exp_clef_dynamique contient les liens du nuage afficher dans la page de larticle.

Le script doit accder aux ventuels enregistrements concernant lID article quil affiche dans ces 2 tables. La cl daccs est la mme pour les deux tables : le champ id_article de la page article en cours de publication par zoom.php.

124

Piloter la stratgie de rfrencement

viter les duplicate contents involontaires


Un pige guette le codeur ne faisant pas attention aux URL. tant donn quil existe plusieurs rubriques pour une bonne partie de chacun des articles de la table, il existe plusieurs URL pour accder un mme article. Il va falloir rester dans le choix opr en dbut de projet pour grer cette problmatique. La seule URL valide est celle de la rubrique primaire de larticle. travers la navigation sur le site, les bots de Google nont dcouvert que les liens vers des articles sous les URL de leurs rubriques principales. Il faut rester dans ce schma. Un autre pige attend le codeur : faire des nuages de liens trop semblables. Un nuage ressemble un grand bloc de texte contenant des ancres. Avec le mme grand bloc de texte sur une vingtaine de pages, un duplicate content sur une partie de la page peut survenir, entranant la dsindexation possible dune ou plusieurs page. Pour limiter les risques, affichons les liens dans un ordre diffrent. Ce sera une premire mesure pour lutter contre les duplicate contents. Le dbut de la version simple du script zoom.php et de la version avec nuage de liens sont strictement identiques. Les modications lies la gestion du nuage de liens apparaissent juste aprs la ligne :
view_article($line);

Cette ligne affiche larticle. Dans la version simple vue au chapitre prcdent, on ferme la page. Dsormais, on passe la gestion du nuage de liens :
view_article($line); // on commence par le lien vers la landing page $id_article_depart = $line["id"] ; // $sql_landing_page = "select * from landing_pages_id_article_url where id_article = " . $id_article_depart . " ;" ; if ( !($request2 = mysql_query($sql_landing_page)) ) die(Erreur SQL !.$sql. .mysql_error()); if ($landing_page = mysql_fetch_array($request2) ) // si on a au moins un lien afficher { // div de dbut des BL dynamiques echo <div class="jcmbparalarge"> ; echo Liens connexes : . $line["url"] . <br /><br /> ;

125

Page rank sculpting et backlinks

echo <a href=". $landing_page["url_lien"] . "> . $landing_page["libelle_lien"] . </a> <br /><br /> ; $sql_BL_a_poser = "select * from exp_clef_dynamique where id_article = " . $id_article_depart . " order by md5(rand()) ;" ; if ($request_BL_a_poser=mysql_query($sql_BL_a_poser)) // tous les BL poser pour larticle o nous sommes { while ($line_UN_BL_a_poser = mysql_fetch_array($request_BL_a_poser)) // liste des liens en nuage poser pour cet article { $sql5 = "select * from articles where ID = " . $line_UN_BL_a_poser["id_article_cible"] . " ; " ; $request5 = mysql_query($sql5); $line5 = mysql_fetch_array($request5) ; $url_article_cible = $line5["url"] ; // // quelle est la rubrique PS (primaire) // de cet article cible ? $sql3 = "select * from article_rubrique where id_article = " .$line_UN_BL_a_poser["id_article_cible"] . AND primaire > 0 . " ; " ; if ($request3 = mysql_query($sql3)) { // quel est le id_rubrique primaire // de cet article, cd la seule URL // href valide du site // (pour viter les dup content). $line3 = mysql_fetch_array($request3) ; //quel est le dtail de la rubrique ? // l on a juste son ID cd son n // (dont on a aussi besoin pour // construire lURL du BL $sql4 = "select * from rubrique where ID = " . $line3["id_rubrique"] . " ; " ; if ($request4 = mysql_query($sql4))

126

Piloter la stratgie de rfrencement

{ $line4 = mysql_fetch_array($request4) ; // // quelle est lURL gnrer // depuis la table rubrique ? // il faut article/url de larticle cible echo <a href="article/ . $url_article_cible . .html&src=. $line4["nom"] . "> . $line_UN_BL_a_poser["libelle_BL"] . </a> ; } } else { echo <br /><b> Pas de rubrique primaire pour cet article ? Impossible / bogue </b> ; } echo <br /><br />;// br a chaque passe du while } // accolade fin du while } // fin de BL dynamiques echo </div> ; // div de FIN des BL dynamiques } ?>

On commence par gnrer le backlink vers la landing page. Il nous faut pour cela les informations stockes dans la table landing_pages_id_article_url. Le code ci-aprs extrait ces informations.
view_article($line); // on commence par le lien vers la landing page. $id_article_depart = $line["id"] ; // $sql_landing_page = "select * from landing_pages_id_article_url where id_article = " . $id_article_depart . " ;" ; if ( !($request2 = mysql_query($sql_landing_page))) die(Erreur SQL !.$sql. .mysql_error()); // on rcupre notre landing page if ($landing_page = mysql_fetch_array($request2)) // si on a au moins un lien afficher

127

Page rank sculpting et backlinks

Si on a au moins un lien afficher dans le nuage, le backlink vers la landing page, on affiche le conteneur, le titre du nuage et le backlink avec le script ci-aprs. Dans cet exemple et dans la mthodologie de lexercice, $lien["url"] contient obligatoirement les mmes informations que le champ expression_clef de la table article. Cela nous dispense dafficher expression_clef dans zoom.php comme voqu prcdemment.
if ($landing_page = mysql_fetch_array($request2)) // si on a au moins un lien afficher { // div de dbut des BL dynamiques echo <div class="jcmbparalarge"> ; echo Liens connexes : . $line["url"] . <br /><br />; echo <a href=" . $landing_page["url_lien"] . "> . $landing_page["libelle_lien"] . </a> <br /><br /> ;

Il nous reste afficher, ligne par ligne, les liens du nuage :


$sql_BL_a_poser = "select * from exp_clef_dynamique where id_article = " . $id_article_depart . " order by md5(rand()) ;" ; // tous les BL poser pour larticle o nous sommes if ($request_BL_a_poser=mysql_query($sql_BL_a_poser)) {

Par dfaut, une requte SQL renvoie les enregistrements dans lordre o ils sont trouvs dans la table. Or pour avoir un affichage alatoire des liens dans le nuage, il faut stocker dans un autre ordre les articles retourns dans la vue.
order by md5(rand()). Cet ajout dans la requte SQL dclenche un renvoi des articles

correspondant avec un ordre issu du hasard.

Risque deffondrement du serveur web


Attention, la fonction rand() dans un ORDER BY dans MySQL est dangereuse utiliser. MySQL va affecter une valeur random (alatoire) tous les enregistrements de la table

128

Piloter la stratgie de rfrencement

puis excuter la clause where. Sur un site web avec des tables volumineuses en enregistrements et des utilisateurs nombreux, on peut dclencher un effondrement des performances, prlude un crash du serveur.
Illustration de surcharge due rand() dans MySQL
Votre table article contient 5 000 enregistrements et votre clause where en isolera une douzaine. La fonction Rand() va tre excute sur toute la table, la table va tre trie et enn la clause where sera applique pour en extraire les lignes voulues dans le dsordre souhait. Cela consomme beaucoup trop de ressources disques, mmoire, processeur. Les temps de rponse seront lents, les performances globales du serveur fortement perturbes.

Pour notre site exemple, ce codage base de md5(rand()) est suffisant. Pour un site avec des bases plus importantes et de nombreux utilisateurs affichant des pages, il est obligatoire de coder son propre algorithme de tri alatoire dans un tableau. Une piste pour un algorithme peu gourmand en ressources :
j j

j j j

Dans un tableau deux dimensions : une pour les nombres, une pour les chanes de caractres. Dans la colonne chane de caractres, copier les enregistrements de la ressource $sql_BL_a_poser directement sous la forme de lien <a href= </a> raison de un lien par entre dans le tableau. Gnrer un nombre alatoire chaque ligne du tableau et le dposer dans la colonne numrique du tableau bidimensionnel. Trier le tableau . Afficher les chanes du tableau.

Lendroit idal pour faire cela est la n du script. Au lieu de lancer laffichage avec des
echo, on crit dans le tableau deux dimensions, on traite pour mettre dans un dsordre

alatoire, on affiche. Il existe plusieurs variantes autour de cette approche. Chacun pourra modier ou amliorer sa convenance. Dans cette bauche de routine coder, le traitement est effectu uniquement sur la vingtaine de liens autoriss, ce qui limite fortement la consommation de ressources.

Boucle affichant le nuage de liens


La vue $line_UN_BL_a_poser contient un enregistrement par lien. Tous les enregistrements sont dans le dsordre :

129

Page rank sculpting et backlinks

while ($line_UN_BL_a_poser = mysql_fetch_array($request_BL_a_poser)) // liste des liens en nuage poser pour cet article { $sql5 = "select * from articles where ID = " . $line_UN_BL_a_poser["id_article_cible"] . " ; " ; $request5 = mysql_query($sql5); $line5 = mysql_fetch_array($request5) ; $url_article_cible = $line5["url"] ;

Pour chacun de ces liens poser, il va falloir construire le lien avec les mots-cls ncessaires pour lURL rewriting et viter des duplicate contents. Chaque lien doit utiliser les mots-cls prvus. La requte $request5 permet de rcuprer les mots-cl URL de larticle cibl. Rappel : le lien doit avoir la forme suivante :
<a href="article/ URL de larticle cibl.html&src=nom de la rubrique primaire">libell bas sur le TITLE de larticle</a>

Le nom de la rubrique primaire alourdit notre traitement mais nous permet de caser des mots-cls dans lURL. Cest un travail fort utile. Pour construire chaque lien de ce nuage, on a donc besoin de rcuprer :
j j j

lURL de article cible ; le nom de la rubrique PRIMAIRE de cet article ; le numro de la rubrique primaire.

Le code source ci-aprs ralise cet algorithme pour chaque lien. La dernire ligne de cet extrait affiche le lien construit.
// quelle est la rubrique PS (primaire) // de cet article cible ? $sql3 = "select * from article_rubrique where id_article = " . $line_UN_BL_a_poser["id_article_cible"] . AND primaire > 0 . " ; " ; ($request3 = mysql_query($sql3)) { // quel est le id_rubrique primaire de cet article,

130

Rsum de ce chapitre

// cd la seule URL href valide du site // (pour viter les dup content). $line3 = mysql_fetch_array($request3) ; $sql4 = "select * from rubrique where ID = " . $line3["id_rubrique"] . " ; " ; if ($request4 = mysql_query($sql4)) { $line4 = mysql_fetch_array($request4) ; // quelle est lURL gnrer // depuis la table rubrique // il faut article/url de larticle cible echo <a href="article/. $url_article_cible . .html&src= . $line4["nom"] . "> . $line_UN_BL_a_poser["libelle_BL"] . </a> ;

Le reste du script ferme les accolades ouvertes et traite une ventuelle erreur.

Fin du script PHP


On ferme les <div> ouverts et on affiche le pied de page.
</div> </div> <?php $map = MiseEnPage::bas() ; ?>

3.7 Rsum de ce chapitre


Dans ce chapitre, vous avez appris faire du PR sculpting. En clair, vous avez vu comment rcuprer une partie de votre Page rank et comment lassocier des mots-cls pour mieux positionner un groupe dune vingtaine de pages sur leurs mots-cls. Depuis cette base de 20 pages, vous avez vu comment en favoriser une plus que toutes les autres. LURL rewriting est un appoint prcieux pour rfrencer des pages sur leurs mots-cls. Cependant, un usage maladroit de lURL rewriting peut rapidement aboutir des maladresses conduisant des duplicate contents et autres erreurs contreproductives pour le rfrencement.

131

4
4.1 Pourquoi la gestion de session ? ...................... 4.2 Cookies et gestion de session par URL ............... 4.3 Les objectifs du codeur/rfrenceur en gestion de session ............................................... 4.4 Gestion de sessions en URL rfrences ............. 4.5 Protger son site des hackers .......................... 134 134 136 139 153

Rfrencement et gestion de session


A
n de personnaliser les contenus ou de suivre le comportement des internautes, de nombreux codeurs utilisent la gestion de sessions. Certes cette approche est efficace pour ces objectifs. En revanche, ce que savent moins les codeurs, cest que les diffrentes approches en gestion de sessions peuvent tre incompatibles avec les attentes et besoins de Google en accessibilit technique ou smantique ainsi quen garantie de contenu unique. Dans ce chapitre nous allons voir les piges de la gestion de session capables de fortement perturber le rfrencement et le positionnement russis dans Google. Nous verrons prsenterons approches pour les viter, illustres dexemples et de codes sources.

Rfrencement et gestion de session

4.1 Pourquoi la gestion de session ?


Le gestionnaire dun site Internet peut avoir besoin, dans de nombreux cas, de tracer le comportement de linternaute sur son site :
j j j j

Quelles sont les pages visites ? Dans quel ordre ? Quels sont les mots-cls saisis dans un moteur pour arriver sur une des pages du site ? Quels sont les produits regards ?

Dans de nombreux autres cas, le gestionnaire du site aura besoin dauthentier un internaute puis de lui assurer un change scuris. La logique applicative du site pourra avoir besoin de connatre un paramtrage prcis :
j j

Linternaute a demand un ltre appliquer sur toutes ses demandes. Le site personnalise ses rponses en fonction de linternaute ou dun facteur externe.
Gestion de sessions et Google se comprennent mal

Les cookies, condition de ne pas tre obligatoires sur le site, ne gnent pas les bots de Google. Les URL surcharges peuvent perturber Google de diffrentes manires. Elles sont trop charges : Google les ignore. Plusieurs URL grant des sessions mnent une mme page : le site a gnr des duplicate contents avec les problmatiques de diminution des performances en rfrencement qui vont avec.

4.2 Cookies et gestion de session par URL


Ces deux techniques vont rpondre aux besoins du codeur an de contenter positivement les multiples demandes et besoins du gestionnaire du site.
Cookies
Le cookie est un chier plac par le site web sur le "disque" local de linternaute. Larchitecture du cookie est faite de telle manire que seul le nom de domaine auteur dun cookie peut le consulter. Inutile donc dessayer de lire les cookies des autres noms de domaine ; ils ne ragiront pas. Cette technique permet de suivre dans la dure un utilisateur donn, acceptant les cookies, utilisant le mme micro ordinateur et le mme navigateur, sans jamais faire le mnage dans ses cookies avec un quelconque utilitaire.
SUITE

134

Cookies et gestion de session par URL

En xant une longue dure de vie son cookie, un site web peut ainsi construire des historiques sur ses internautes sans avoir besoin de les identier. Le chier du cookie peut stocker des informations, typiquement un code ou une paire didentiant type login/mot de passe. La logique applicative du site peut corrler ce code unique avec les traces laisses par les passages prcdents de ce mme cookie. Pour peu que linternaute se soit identi un moment quelconque lors de ses passages pour acheter ou demander quelque chose via un formulaire, le site peut savoir qui il est et "tracer" ses activits. Le cookie est dcrit dans la RFC2109 http://www.ietf.org/rfc/rfc2109.txt. Son fonctionnement est implment dans les outils des acteurs du Net via le suivi de cette RFC2965 : http://tools.ietf.org/html/rfc2965.

Le gestionnaire du site peut coder la gestion de session dans lURL avec plusieurs approches distinctes et complmentaires. LURL contient juste un code qui permet didentier linternaute. La logique applicative rcupre ce code chaque page, enregistre les actions. On trace ainsi lactivit de linternaute. On gre la personnalisation des pages envoyes cet internaute ainsi que ses droits daccs certaines informations ou ressources. Le comportement de linternaute sur la page ne peut pas toujours tre identi par le back office du site. Le codeur associe alors un lien des informations lies aux actions de linternaute : il a cliqu sur tel bouton quand celui-ci affichait ceci, etc. Ces informations sont passes via lURL.
Gestion de session par ID dans lURL
Les sessions gres par URL ne ncessitent pas laccord de linternaute, contrairement aux gestion de session gres par cookies. Elles ne laissent aucune trace sur son micro-ordinateur, sauf associer volontairement session et cookie. En PHP, les variables de session sont dites super globales car elles sont toujours prsentes mme si la page est recharge. Les variables de session permettent de transporter des actions de linternaute sur le site. La logique applicative du site peut alors ragir sur ces informations : les stocker pour historique, renvoyer une information prcise, calculer un affichage personnalis, vrier un droit daccs, etc.

Plusieurs problmatiques vont survenir avec ces techniques :


j j j j

Des utilisateurs nacceptent pas les cookies. Les bots des moteurs nacceptent jamais les cookies. Les bots des moteurs naiment pas les URL charges en paramtres. Les URL charges en paramtres sont en gnral contre productives en rfrencement/positionnement.

135

Rfrencement et gestion de session

Nanmoins, il y a des demandes satisfaire et il va falloir coder en ne se faisant pas piger dans ces problmatiques.
Pourquoi les internautes naiment pas les cookies
Cest le parfait outil pour espionner le comportement, la vie prive, dun internaute travers de multiples sites. Voici le processus fort simple mettre en uvre : Un internaute charge une page Pa dun site Sa. Cette page Pa contient une image venant dun site Sz. Ce site Sz place un cookie Cz sur le navigateur de notre internaute. Notre internaute navigue sur le site Sa dont toutes les pages ont une image de Sz. Celui-ci enregistre toute la navigation de notre internaute grce au cookie plac ds la 1re page. Notre internaute quitte Sa et va naviguer sur le site web Sb. Une image de Sz est prsente sur toutes les pages de ce site. Le site Sz, grce au cookie Cz issu du 1er site Sa, vous a identi de nouveau et suit votre navigation sur le site web Sb. Voici une anecdote. Suite une fuite dun chier log, des personnes se sont amuses aux tats-Unis identier et deviner la vie prive des personnes ayant laiss des traces. Leurs vies prives et leurs identits ont ainsi t publies.

4.3 Les objectifs du codeur/rfrenceur en gestion de session


Les demandes de gestionnaire de site doivent tre dcomposes en groupes distincts :
j j

les fonctionnalits destines tracer les internautes pour constituer un historique ou personnaliser laffichage ; ce qui reste visible du site tout internaute.

Un exemple pour exposer cette mthodologie. Sur notre site exemple, on dsire offrir linternaute la possibilit de ltrer les articles par rgion. Actuellement, tout clic dans la navigation affiche des articles visant la France entire. Comment faire ? La table article possde un champ rgion qui accepte un entier. On pourra y saisir lID de la rgion. Par dfaut, ce sera lID de France entire. La table region dispose de trois colonnes : ID, nom, acronyme. Elle est prremplie avec les rgions de France :
--- Structure de la table region -CREATE TABLE region (

136

Les objectifs du codeur/rfrenceur en gestion de session

id int(4) NOT NULL auto_increment, nom varchar(255) default NULL, acronyme varchar(255) default NULL, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=liste des regions franaises AUTO_INCREMENT=89; --- Contenu de la table region -INSERT INTO region (id, nom, acronyme) VALUES (1, France, France), (2, Alsace, Alsace), (3, Aquitaine, Aquitaine), (4, Auvergne, Auvergne), (5, Basse Normandie, B Normandie), (6, Bourgogne, Bourgogne), (7, Bretagne, Bretagne), (8, Centre, Centre), (9, Champagne-Ardenne, Champagne), (10, Corse, Corse), (11, Dpartements dOutre-Mer, DOM), (12, Franche-Comt, Franche-Comt), (13, Haute-Normandie, H Normandie), (14, Ile-de-France, IdF), (15, Languedoc-Roussillon, Languedoc), (16, Limousin, Limousin), (17, Lorraine, Lorraine), (18, Midi-Pyrnes, Mi-Pyrnes), (19, Nord-Pas-de-Calais, Nord-PdC), (20, Pays de la Loire, Loire), (21, Picardie, Picardie), (22, Poitou-Charentes, Poitou-Ch), (23, Provence-Alpes-Cte-dAzur, PACA), (24, Rhne-Alpes, Rhne-Alpes), (25, Territoires dOutre-Mer, TOM);

Un internaute, pour indiquer quil dsire voir les articles tris par rgion, doit cliquer sur la rubrique Slection par rgion. Cette rubrique affiche, selon dautres critres, les mmes articles que les autres rubriques du site exemple. Les mmes pages auront des URL diffrentes. Mais cette fonctionnalit, afficher les articles par rgion dappartenance, intresse les internautes. Il faut donc la laisser.

137

Rfrencement et gestion de session

Pour protger notre rfrencement, nous modierons article.php et la fonction haut() de la classe MiseEnPage, du chier php_inc/MiseEnPage.inc.php.
public static function haut($title , $content , $repertoire , $follow_index) // du code identique <title> $title</title>" ; if ($follow_index == 0) // page region, ne pas indexer Print "<meta name=ROBOTS content=NOINDEX,NOFOLLOW>"; Print " <meta name=description content=$content /> // La suite du code ne change pas.

Nous avons un nouvel argument : $follow_index. La valeur 0 (zro) indique quil ne faut pas permettre au bot dindexer cette page. La valeur 1 (un) indique que le bot Google peut parcourir cette page sans risque pour le rfrencement du site web. La valeur 0 dclenche la pose du meta ROBOTS en noindex, nofollow. Ce meta interdit aux moteurs dindex de suivre les liens de cette page. Le lien pointant vers la rubrique Slection par rgion a depuis le dbut de notre site web exemple une balise rel="nofollow" indiquant Google de ne pas suivre ce lien. Ce lien est dans le menu gauche de la page. Nous avons remarqu, via la commande site:, que Google pouvait outrepasser lindication rel="nofollow". Par prudence, nous indiquons via $follow_index, un meta de blocage envers tout moteur. Revenons notre mthode. Nous avons spar dun ct ce qui est ncessaire linternaute et que lon peut rendre inaccessible Google. Dun autre ct, nous avons ce qui doit tre impeccable, ce que Google peut ou mme doit voir. Pour atteindre cet objectif, plusieurs approches pratiques sont possibles. En voici deux :
j

Comme dans notre exemple prcdent, nous avons isol dans une rubrique protge par des noindex nofollow la fonctionnalit pouvant perturber gravement notre rfrencement. La rubrique Slection par Rgion est ainsi inaccessible aux bots de Google et autres moteurs de recherche. Une approche mise en uvre par Amazon ou la Fnac consiste laisser accessible Google un site web trs hirarchis o aucun session_start() nest lanc. Dans le mme site web, les mmes pages et programmes, via une protection type noindex, nofollow ou autre technique quivalente, utilisent les mmes donnes MySQL avec des gestions de sessions permettant une gestion marketing plus efficace sur le comportement des internautes. Pour cela, on lance ou non session_start() selon le user agent HTTP.

138

Gestion de sessions en URL rfrences

4.4 Gestion de sessions en URL rfrences


Nous allons modier notre site web exemple pour lui permettre davoir des gestions de sessions en URL sur lintgralit du site tout en conservant une compatibilit avec les besoins de Google pour accder techniquement et smantiquement aux pages du site.

Session en URL invisible Google


Le bot de Google ne doit jamais accder une page en gestion de session par URL. Mais les pages de notre site web exemple sont toutes sous gestion de session. Voici lalgorithme qui sera appliqu. Nous allons permettre linternaute de naviguer dans le site en ltrant sur une rgion prcise. Linternaute pourra ainsi avoir uniquement les informations propres sa rgion, le Nord-Pas-de-Calais, par exemple. Pour suivre les N internautes naviguant simultanment sur le site, une seule possibilit : suivre par gestion de session en URL chaque internaute pour identier qui est le possesseur de tel ou tel ltre. Les URL et sessions gnres seront gres par Apache, soit via Cookies, les URL restent intactes, soit via URL modies par lajout dun jeton de session, soit les deux. Ces carts de comportement dpendent de votre serveur Apache et de son paramtrage. Cela dpend donc de votre hbergeur pour les sites hbergs avec une formule mutualise. Un exemple dURL modie pour une gestion de session : /revenus-chef-entreprise/rubrique/
0/1.html?PHPSESSID=057aaae217ac88b23f8412e3e11d2367

Ce type dURL dclenche des duplicate contents. chaque visite, le bot de Google aura une URL diffrente pour une mme page. Voici lalgorithme qui sera implment dans notre site exemple : La page permettant linternaute de choisir son ltre est et reste en noindex, nofollow : la rubrique Slection par Rgion. Il est inutile de la laisser en accs Google. Tout bot est dtect et on ne lance pas le session_start() permettant dinitialiser la gestion de session. Ainsi, les bots ne voient quun site strictement hirarchis, conforme leurs possibilits de comprhension robotises. Tout internaute humain ou dtect comme tel :
j j

A un session_start() pour la page index : inutile mais pratique pour dboguer. A un session_start() pour tout affichage via article.php.

139

Rfrencement et gestion de session

Na pas de gestion de session pour toute page affiche par zoom.php : inutile par dnition dans notre exemple. Un article prcis demand est par dnition vu travers lventuel ltre donc inutile de contrler quoi que ce soit.

Tout internaute ayant slectionn un ltre se voit attribuer une variable de session codant lID de la rgion ltrer.

Code source session invisible Google


Le code source de la fonction est issu dune base dont lorigine est publie en libre accs :
j j j

Remi Aubert & Alan Boydell ; Remi : www.remiaubert.com ; Alan : www.analytics.fr.

Le code source dorigine servait traquer le trac des bots sur un site web via Google Analytics. Ce code source a t modi et adapt par Gilles Grgoire le 23/12/2008 pour remplacer un code de Gilles moins lgant et dont il tait plus difficile dassurer la maintenance. Cette fonction, session_region(), est en charge de suivre le comportement des bots sur des URL et des pages optimises SEO. Il bascule sur une action ou une autre selon le visiteur : bot ou humain. Plusieurs sites fournissent la liste ou des informations sur les bots en circulation :
http://www.robotstxt.org/db/schema.txt liste les principaux robots en circulation : plus de 2 000 actifs en 2008 selon ce site. Dans ce site, "notre" utilisation PHP du http user agent du robot correspond la ligne robotuseragent.

La liste des bots et le script patterns.php dans notre exemple proviennent de : BBclone
www.bbclone.de.

Cette fonction est dans la classe MiseEnPage dans php_inc/MiseEnPage.inc.php :


public static function session_region() { require_once (patterns.php ); $verbotten = 0 ; // 0 = mode silencieux 1=> affichage messages debug $debug = 0 ; // Mettre 1 pour passer Chrome en outil de debug // simule un bot donc on doit viter session start // $debug 0 : internaute, lancer session start()

140

Gestion de sessions en URL rfrences

$log = 1 ; // on loggue le trafic de debug en ligne // Ouverture du fichier en criture $nomfic = "log.txt"; if(!($fic_log = fopen($nomfic, "a"))) { print("Erreur: "); print("Cration ouverture impossible de $nomfic \n"); exit; } $user_agent = getenv("HTTP_USER_AGENT" ); // si on est sur un PC de dv et sous Chrome if ((strpos(XX.$_SERVER[SERVER_NAME],127.0.0.1)>0) or (strpos(XX.$_SERVER[SERVER_NAME],localhost)>0)) //alors on est considr comme un moteur pour permettre les tests { if ($verbotten) echo <br /> Chrome Gilles <br /> ; $bot_moteur = strpos($user_agent , "Chrome") ; if ($bot_moteur > O) { $gilles = "Chrome" ; // chrome sur local => le codeur $user_agent = "Chrome" ; // tre pris pour un bot } } // par dfaut on considre que visiteur est un internaute $internaute = 1; # Sil existe un referer alors internaute humain # car les robots nont pas de referer. if( empty( $_SERVER["HTTP_REFERER"] ) ) { $internaute = 0; } if ($verbotten) echo <br /> HTTP_REFERER = . $_SERVER["HTTP_REFERER"] . Vide = Moteur possible sinon c un humain <br />; // Si le visiteur renvoie un OS connu // il ne sagit pas dun robot foreach($os as $pattern => $o) { if ( preg_match( #.$pattern.#msi , $_SERVER["HTTP_USER_AGENT"] ) == 1 )

141

Rfrencement et gestion de session

{ $internaute = 1; $os_name = preg_replace ( "/\\s{1,}/i" , - , $o ); if ($verbotten) echo <br /> OS = . $os_name . internaute == . $internaute . ; if ($log) { $uri = $_SERVER["REQUEST_URI"]; $var_now = time(); //date du jour fputs($fic_log, $os_name = . "\t" . $os_name . "\r\n" . sur page : . "\t" . $uri . "\r\n" . : . "\t\t" . date(DATE_RFC822 , $var_now) . "\r\n" . ========== ."\r\n" . "\r\n"); } break; } } // en debug, chrome doit tre vu comme un bot. if ($debug) { array_push($bots, $gilles); if ($verbotten) echo <br /> debug : Chrome mis dans pattern $bots ; $internaute = 0 ; } if ( $internaute == 0 ) { #On verifie de quel bot il sagit foreach( $bots as $pattern => $bot ) { if ( preg_match( #.$pattern.#i , $_SERVER[HTTP_USER_AGENT] ) == 1 ) { //on recupre le nom du bot $botname = preg_replace ( "/\\s{1,}/i" , - , $bot ); $uri = $_SERVER["REQUEST_URI"];

142

Gestion de sessions en URL rfrences

//Resquested URI by Crawler - Page vue par le visiteur $var_now = time(); //date du jour if ($verbotten) echo <br /> $botname = . $botname . sur page : . $uri . : . date(DATE_RFC822 , $var_now); if ($log) fputs($fic_log, $botname = . "\t" . $botname . "\r\n" . sur page : . "\t" . $uri . "\r\n" . : . "\t\t" . date(DATE_RFC822 , $var_now) . "\r\n" . ======= ."\r\n" . "\r\n"); break; } } } if ($internaute == 1) // 1 = humain { session_start(); if ($verbotten) echo ******* debug gg *** START SESSION pour humain . $user_agent . <br> ; } else if ($verbotten) echo ******* debug gg *** PAS SESSION car robot . $user_agent . <br> ; if ($log) fclose($fic_log); } // accolade de fin de fonction

tudions le code source de cette fonction


public static function session_region() { require_once (patterns.php ); $verbotten = 0 ; // 0 = mode silencieux 1=> affichage messages debug

143

Rfrencement et gestion de session

$debug = 0 ; // Mettre 1 pour passer Chrome en outil de debug // simule un bot donc on doit viter session start // $debug 0 : internaute, lancer session start() $log = 1 ; // on loggue le trafic de debug en ligne // Ouverture du fichier en criture $nomfic = "log.txt"; if(!($fic_log = fopen($nomfic, "a"))) { print("Erreur: "); print("Cration ouverture impossible de $nomfic \n"); exit; }

Ce sont les dclarations classiques. $debug permet de forcer un navigateur Chrome comme bot. Cest pratique pour la phase de mise au point ou dvolution. Il suffit de surfer avec Chrome et de regarder le log. $verbotten permet de passer en mode Bavard. $log valide le suivi en chier log de certaines actions et informations. Continuons :
$user_agent = getenv("HTTP_USER_AGENT" ); // si on est sur un PC de dv et sous Chrome if ((strpos(XX.$_SERVER[SERVER_NAME],127.0.0.1)>0) or (strpos(XX.$_SERVER[SERVER_NAME],localhost)>0)) //alors on est considr comme un moteur pour permettre les tests { if ($verbotten) echo <br /> Chrome Gilles <br /> ; $bot_moteur = strpos($user_agent , "Chrome") ; if ($bot_moteur > O) { $gilles = "Chrome" ; // chrome sur local => le codeur $user_agent = "Chrome" ; // tre pris pour un bot } }

On rcupre lagent http du visiteur. Sur le PC de dveloppement, on peut passer le navigateur Chrome comme un bot. Il faudra tester la version "humaine" avec un autre navigateur.

144

Gestion de sessions en URL rfrences

Ensuite :
// par dfaut on considre que visiteur est un internaute $internaute = 1; # Sil existe un referer alors internaute humain # car les robots nont pas de referer. if( empty( $_SERVER["HTTP_REFERER"] ) ) { $internaute = 0; } if ($verbotten) echo <br /> HTTP_REFERER = . $_SERVER["HTTP_REFERER"] . Vide = Moteur possible sinon c un humain <br />; // Si le visiteur renvoie un OS connu // il ne sagit pas dun robot foreach($os as $pattern => $o) { if ( preg_match( #.$pattern.#msi , $_SERVER["HTTP_USER_AGENT"] ) == 1 ) { $internaute = 1; $os_name = preg_replace ( "/\\s{1,}/i" , - , $o ); if ($verbotten) echo <br /> OS = . $os_name . internaute == . $internaute . ; if ($log) { $uri = $_SERVER["REQUEST_URI"]; $var_now = time(); //date du jour fputs($fic_log, $os_name = . "\t" . $os_name . "\r\n" . sur page : . "\t" . $uri . "\r\n" . : . "\t\t" . date(DATE_RFC822 , $var_now) . "\r\n" . ========== ."\r\n" . "\r\n"); } break; } }

145

Rfrencement et gestion de session

On considre que tout visiteur est un humain. Sil y a un http_REFERER, on conrme que cest un humain. Il existe des navigateurs humains sans REFERER. Testons le systme dexploitation. Si lOs est connu, cest un humain. Autrement, on considre que cest un bot. En mode Bavard ou Log, on trace les caractristiques du visiteur :
// en debug, chrome doit tre vu comme un bot. if ($debug) { array_push($bots, $gilles); if ($verbotten) echo <br /> debug : Chrome mis dans pattern $bots ; $internaute = 0 ; }

Chrome est pass comme bot en mode Debug. Si le visiteur est un bot, qui est-il ? Traons son passage :
if ( $internaute == 0 ) { #On verifie de quel bot il sagit foreach( $bots as $pattern => $bot ) { if ( preg_match( #.$pattern.#i , $_SERVER[HTTP_USER_AGENT] ) == 1 ) { //on recupre le nom du bot $botname = preg_replace ( "/\\s{1,}/i" , - , $bot ); $uri = $_SERVER["REQUEST_URI"]; //Resquested URI by Crawler - Page vue par le visiteur $var_now = time(); //date du jour if ($verbotten) echo <br /> $botname = . $botname . sur page : . $uri . : . date(DATE_RFC822 , $var_now); if ($log) fputs($fic_log, $botname = . "\t" . $botname . "\r\n" . sur page : . "\t" . $uri . "\r\n" . :

146

Gestion de sessions en URL rfrences

. "\t\t" . date(DATE_RFC822 , $var_now) . "\r\n" . ======= ."\r\n" . "\r\n"); break; } } }

ce stade, nous savons si nous avons un visiteur humain ou robot. Action entreprendre pour un humain ou un bot :
if ($internaute == 1) // 1 = humain { session_start(); if ($verbotten) echo ******* debug gg *** START SESSION pour humain . $user_agent . <br> ; } else if ($verbotten) echo ******* debug gg *** PAS SESSION car robot . $user_agent . <br> ; if ($log) fclose($fic_log); } // accolade de fin de fonction

On lance une session pour un visiteur humain. Autrement, on ne fait rien.

La liste des bots et des OS


Il faudra mettre jour la liste des bots et des OS rgulirement dans le script PHP suivant. Dans le code source nous avons :
require_once (patterns.php );

Ce script PHP contient deux dclarations de tableau : $bots en premier, suivi la n du chier par $os :
$bots = array( Mediapartners-Google[ /]([0-9.]{1,10}) => Google Mediapartners, Mediapartners-Google => Google Mediapartners, Googl(e|ebot)(-Image)/([0-9.]{1,10})

147

Rfrencement et gestion de session

=> Google Image, Googl(e|ebot)(-Image)/ => Google Image, ^gsa-crawler => Google, Googl(e|ebot)(-Sitemaps)/([0-9.]{1,10})? => Google-Sitemaps,

Quelques centaines de lignes dnissent moins de 1 000 bots. Le mme principe est appliqu aux systmes dexploitation :
$os = array (wi(n|ndows)? => windows, linux[ /\-]([a-z0-9._]{1,10}) => linux, linux => linux, Mac[ _]?OS[ _]?X[ /]([0-9.]{1,10}) => macosx,

Appel cette fonction session_region


Les scripts PHP article.php, index.php, region.php appellent cette fonction ds le dbut :
<?php require_once("php_inc/MiseEnPage.inc.php"); require_once("php_inc/init.inc.php"); require_once("php_inc/biblio_inc.php"); MiseEnPage::session_region() ; //

Code source de region.php


Le script region.php permet de slectionner un ltre rgional pour afficher les rsultats des diffrentes rubriques du site ou directement dans la page region.php, la liste des articles par rgions, toutes catgories confondues, dun seul clic :
<?php require_once("php_inc/MiseEnPage.inc.php"); MiseEnPage::session_region() ; require_once("php_inc/init.inc.php"); require_once("php_inc/biblio_inc.php"); $title_page = "filtrer par region - selection " ; $meta_description_content = "filtrer par region"; $follow_index = 0 ; // jamais de bot Google ici MiseEnPage::haut( $title_page , $meta_description_content , $rep, $follow_index ) ; ?>

148

Gestion de sessions en URL rfrences

<div id="sousban"> </div> <div id="pagegauchetete"> <?php MiseEnPage::MenuGauche() ; ?> </div> <!-- fin page gauche tete --> <div id="pagecentretete"> <div id="sousban800"> </div> <!-- COLONNE DROITE --> <div id="pagedroite"> <?php $rubrique = 999 ; MiseEnPage::MenuDroite($rubrique) ; ?> </div> <!-- fin page droite --> <!-- *** CONTENU DES PAGES zone centre *** --> <div id="pagetext"> <h1>Filter les rsultats par rgion franaises </h1> <p> Par dfaut, les rsultats des rubriques interroges sont des informations propres toute la France. <br /> <br /> Pour obtenir des rsultats dune rgion franaise prcise, vous pouvez fixer un filtre ci dessous. Un click vous affichera tous les articles dune rgion donne. Tous les click suivant seront filtrs. Pour rcuprer la visibilit sur les articles nationaux, il suffit de cliquer sur<strong> France entire</strong>. </p> <?php // afficher les regions avec un lien par region $sql_query="SELECT * FROM region order by id ASC"; if ($request = mysql_query ($sql_query)) { // $line : tableau des n rows rsultat de la requte while ($line = mysql_fetch_array($request)) { echo filtrage sur : <a href=\articles/region/ . $line["id"] . /1.html\ rel="nofollow" > . $line["id"] . . $line["nom"] . </a> <br /> ; } }

149

Rfrencement et gestion de session

else { echo debug : la requte : . $sql_query . message SQL : . mysql_error() . n\a pu aboutir - Erreur <br /> ; } ?> <!--fin page texte --> </div> <!-- fin pagecentre --> </div> <?php $map = MiseEnPage::bas() ; ?>

Dtaillons les quelques particularits de ce script PHP :


<?php require_once("php_inc/MiseEnPage.inc.php"); MiseEnPage::session_region() ; require_once("php_inc/init.inc.php"); require_once("php_inc/biblio_inc.php"); $title_page = "filtrer par region - selection " ; $meta_description_content = "filtrer par region"; $follow_index = 0 ; // jamais de bot Google ici MiseEnPage::haut( $title_page , $meta_description_content , $rep, $follow_index ) ; ?>

On commence par les require_once pour charger les diffrentes routines dont nous aurons besoin et par la mise en service ou non du session_start() via la fonction session_region(). La page est affiche en nofollow, noindex. Elle doit rester invisible aux bots de Google. Continuons :
<div id="sousban"> </div> <div id="pagegauchetete"> <?php MiseEnPage::MenuGauche() ; ?> </div> <!-- fin page gauche tete -->

150

Gestion de sessions en URL rfrences

<div id="pagecentretete"> <div id="sousban800"> </div> <!-- COLONNE DROITE --> <div id="pagedroite"> <?php $rubrique = 999 ; MiseEnPage::MenuDroite($rubrique) ; ?> </div> <!-- fin page droite --> <!-- *** CONTENU DES PAGES zone centre *** --> <div id="pagetext"> <h1>Filter les rsultats par rgion franaises </h1> <p> Par dfaut, les rsultats des rubriques interroges sont des informations propres toute la France. <br /> <br /> Pour obtenir des rsultats dune rgion franaise prcise, vous pouvez fixer un filtre ci dessous. Un click vous affichera tous les articles dune rgion donne. Tous les click suivant seront filtrs. Pour rcuprer la visibilit sur les articles nationaux, il suffit de cliquer sur<strong> France entire</strong>. </p>

La mise en page de diffrents lments et donnes secondaires sont affiches, rien dextraordinaire. Avanons :
<?php // afficher les regions avec un lien par region $sql_query="SELECT * FROM region order by id ASC"; if ($request = mysql_query ($sql_query)) { // $line : tableau des n rows rsultat de la requte while ($line = mysql_fetch_array($request)) { echo filtrage sur : <a href=\articles/region/ . $line["id"] . /1.html\ rel="nofollow" > . $line["id"] . . $line["nom"] . </a> <br /> ; } } else

151

Rfrencement et gestion de session

{ echo debug : la requte : . $sql_query . message SQL : . mysql_error() . n\a pu aboutir - Erreur <br /> ; } ?>

On affiche en colonnes les diffrentes rgions administres dans la table region. Chaque rgion est "cliquable". Le lien est constitu de :
j j j j j

Article/region : via URL rewriting, on va adresser article.php en passant une rgion ID en argument. LID de la rgion entre / (slash). 1.html indique article dafficher la page 1. Le nom de la rgion. Ce lien est balis en nofollow au cas o malgr tout, un bot passerait sur cette page.

Risques de cette approche


Admettons qu un bot anti-fraude de Google se fasse passer pour un humain et que ce bot passe donc en mode Session. Quarriverait-il ?
j j j

Une URL modie serait utilise au lieu dune URL propre. Deux URL distinctes mnent la mme page mais lune nest pas accessible Google. La page o la pose de ltre intervient est totalement interdite Google. Les 2 pages seront donc identiques au nuage de liens prs qui sera ordonn diffremment.

Google na rien reprocher un tel site. Il ny a pas de risque de pnalit concernant notre approche. Existe-t-il des sites pratiquant ce type de technique ? Oui, amazon.com par exemple. Le bot est inconnu et il reoit une URL modie. 95 % des bots ne travaillent pas pour des moteurs. Cette erreur possible ne prsente pas de risque particulier sauf si Google (ou Microsoft, ou Yahoo) change le nom de son bot et que loutil ne soit pas mis jour. Linternaute est pris pour un bot. Il naura pas accs au fonctionnement avec le ltre. Cette erreur possible ne prsente pas de risque particulier. Elle importune un peu linternaute et notre suivi webmarketing sera fauss concernant cet internaute.

152

Protger son site des hackers

4.5 Protger son site des hackers


Passer dun site statique un site cod en PHP avec des tables MySQL donne la possibilit de fortement amliorer son rfrencement mais cela cre un risque : se faire pirater le site. Les rpertoires sensibles devraient tre protgs par un mot de passe rellement difficile craquer. Peu de sites le font. Cest pourtant fort simple. Voici un premier mode opratoire clairement expliqu et simple mettre en uvre.

.htaccess et contrle daccs


Protger les rpertoires des scripts PHP uniquement
Le propos de ce chapitre est dexpliquer simplement comment protger les rpertoires contenant les scripts PHP sensibles. En aucun cas ce chapitre nest envisag comme un tutorial sur toutes les possibilits de scurisation de rpertoires. Il existe des ouvrages de scurit informatique ou des sites web spcialiss sur le sujet.

Seul Apache ou ladministrateur du site web ont besoin de pouvoir accder aux scripts PHP sensibles, ceux qui donnent accs ladministration des donnes typiquement. Il faut donc les regrouper dans un rpertoire quil sagira de dfendre contre les intrus de toute nature :
j j j

bot de moteur ; scan de rpertoire : aspirateur de site, logiciel traquant les faiblesses dun site, etc. ; accs direct.

La partie "publique" des scripts se contentant dafficher sera en rpertoire daccs libre dans cette version. Dans le rpertoire php_inc, nous allons :
j j

crer un rpertoire mdp (comme Mot De Passe) ; Crer un chier .htaccess.

Le chier .htaccess du rpertoire php_inc contiendra quelque chose de ce type :


#sur WAMP, on garde comme dans unix les / (pas de backslash \ )

153

Rfrencement et gestion de session

# fonctionne sur OVH -- protection simple pour rpertoire sans .htpasswd dedans AuthUserFile / voir chemin obtenu via script php /php_inc/mdp/.htpasswd AuthGroupFile /dev/null AuthName "Accs Restreint " AuthType Basic <Limit GET POST> require valid-user </Limit>

php_inc contient :
j j

les include PHP ncessaires pour se connecter MySQL ; les include PHP ncessaires pour accder aux fonctions permettant de raliser des entres/sorties sur la base.

Ce que prcise ce chier .htaccess :


j j

pas de AuthGroupFile gr ; un chemin daccs absolu vers un chier .htpasswd.

Un des problmes des dbutants : comprendre quel chemin absolu indiquer. Une ligne en PHP permet de rcuprer une telle information.
echo realpath(admin_backoffice.php);

Le script admin_backoffce.php est situ dans le rpertoire protger : php_inc/. Il contient cette ligne. En excutant le script, realpath donnera le chemin absolu utilis par lhbergeur sur votre serveur pour accder au rpertoire protger. Il ny aura plus alors qu copier/coller cette information dans les chiers .htaccess ncessaires. Il faut un utilisateur valide pour accder aux contenus de ce rpertoire :
j j

Tout utilisateur possdant lidentiant plus le mot de passe grs dans le chier .htpasswd. Apache : lappel ces contenus via un require_once ne pose aucun souci. Le login/mot de passe ne sera pas demand.

154

Protger son site des hackers

Le chier .htpasswd est dans le rpertoire php_inc/mdp/ :


gregoire:g8/49Yjq2Xzs0

Le plus simple pour gnrer un mot de passe est de passer par un site comme celui-ci : http://shop.alterlinks.com/htpasswd/passwd.php. Vous saisissez votre identiant, le mot de passe souhait et vous navez plus qu recopier cette ligne dans notre chier .htpasswd. Cette ligne dans le chier .htpasswd signie que lidentiant gregoire a pour mot de passe un lment crypt. Mais le cryptage nest pas suffisant. Il est trs facile casser depuis le code crypt publi :
g8/49Yjq2Xzs0. Des utilitaires permettent de renverser le code et didentier le vrai mot

de passe correspondant. Il faut donc bloquer tout accs ce chier .htpasswd. Ainsi personne ne pourra tenter de renverser le code contenu dans le chier et obtenir ainsi le couple (identiant, mot de passe) lui permettant de pntrer dans le rpertoire sensible. On va, dans notre exemple, interdire laccs tout le rpertoire. Dans le rpertoire php_inc/mdp/, on va crer un chier .htaccess :
AuthUserFile /homez.95/apicslil/blog/php_inc/mdp/.htpasswd AuthGroupFile /dev/null AuthName "Accs interdit" AuthType Basic deny from all

deny from all interdit le rpertoire et ses contenus quiconque. Seul Apache y a accs

ainsi, bien sr, que FTP an de pouvoir mettre jour ce chier. Si on veut pirater votre site, il faudra dabord pirater le serveur Apache ou le serveur FTP, ce qui est dj nettement plus difficile. Votre site sera ainsi beaucoup mieux protg. Le prsent paragraphe ne dispense nullement un codeur/webmestre de complter ses connaissances en scurit informatique pour protger son site web.

155

5
5.1 Web 2.0 et Google ................................... 5.2 Rseau social et rfrencement ........................ 5.3 Interactivit Web 2.0 et rfrencement automatis . 5.4 Rsum de ce chapitre ................................. 158 159 163 178

Rfrencement et Web 2.0


L
e Web 2.0 est un axe important pour Google. En effet, plus il y a dinternautes interagissant avec les pages et contenus dun site, plus celui ci prsente un intrt tre index et bien positionn. De mme les recommandations dURL dans les rseaux sociaux, les votes des internautes constituent des gisements de backlinks et dinformations contextuelles importantes pour Google dans ses calculs de positionnement. Nous allons voir des codes sources pour notre site exemple ciblant deux usages Web 2.0. Ces sources illustreront comment utiliser le Web 2.0 pour amliorer le rfrencement dun site.

Rfrencement et Web 2.0

5.1 Web 2.0 et Google


Le Web 2.0 concerne tous les acteurs du net, Google en premier. Deux comportements Web 2.0 intresseront Google :
j j

identier les pages dont on parle sur le Net ; identier les pages succs

Rseaux sociaux et URL de pages


En effet, le fait que des internautes discutent dinformations (donc de mots-cls) sur des sites, entre autres sujets, intresse Google. Pas pour connatre vos gots personnels, mais pour dterminer des pages de sites qui prsenteraient un intrt potentiel pour les internautes. Proposer de meilleurs rsultats de recherche que ses concurrents est fondamental. Ce sont les internautes qui cliquent sur les liens AdWords. Plus il y a dutilisateurs, plus Google augmente ses revenus publicitaires. Accder aux informations publiques des rseaux sociaux, typiquement ceux qui permettent de voter pour tel ou tel site, fait partir de la mission des bots. Le codeur facilitera le travail des internautes en mettant disposition, sur les pages du site, une bote permettant de cliquer vers des rseaux sociaux an de voter ou de mettre en favori lURL de la page en cours. Ce serait mieux de proposer des URL propres de tout jeton de session.

Contribution des internautes Web 2.0


Si vous permettez des internautes de discuter directement sur votre page, comme dans un blog, quelles en sont les consquences, les risques ventuels ?

Nimporte qui poste nimporte quoi


En France, vous pouvez vous retrouver avec un procs parce quun dealer connect depuis ltranger poste des annonces vers des sites illgaux : vente de tabac de contrebande, etc. Il est donc essentiel de modrer ce type de mcanisme, a priori (on valide avant de publier), ou a posteriori, mais attention aux "requins" des soi disant associations anti-tabac et autres qui traquent la moindre parution illgale, mme courte, et attaquent en demandant de fortes sommes dargent.

158

Rseau social et rfrencement

Vous pouvez simplement placer un automate dtectant les mots-cls sensibles et bloquer la moindre saisie suspecte :
j j j

Le post-rejet avec message derreur. Ladresse IP dorigine en mode Ajout de commentaire sur une page La classe IP de la personne malintentionne en mode Ajout de commentaire sur une page. Tous les internautes de ce fournisseur daccs seront eux aussi bloqus. Vous pouvez les basculer en modration avant publication pour diminuer la gne occasionne.

Ajout de texte et de mots-cls


Dans la plupart des cas, les internautes poseront des questions, feront des commentaires en lien avec le contenu de la page. Les consquences suivantes participeront au rfrencement de la page :
j

Ajout de texte et de mots plus ou moins cls, plus ou moins cohrents. Le poids de la page augmente en nombre de mots. Il est possible de renforcer la densit, par rapport aux textes dorigine, des mots-cls sur la page par des nouveaux textes. Par exemple, lajout automatique dun titre rappelant le thme de la page tous les 5 posts. Des algorithmes plus sophistiqus pourront tre dploys. Dans le cadre de ce livre, nous ferons simple. Ajout au l du temps. Les script PHP ne permettent pas didentier la date de mise jour dune page car celle-ci est produite la demande. En revanche, un moteur comme Google peut identier lajout de texte une page en la comparant celle prsente dans son cache. Il peut tracer la frquence de mise jour dune page et identier les pages recevant frquemment du texte cohrent.

5.2 Rseau social et rfrencement


Commenons par le plus simple. Quels sont les site sociaux les plus usits par Google ? Ce seront ceux privilgier pour faciliter le clic de vote de tout internaute. Google na pas pour habitude de violer les rgles en place. Si un site type rseau social dclare que les favoris de ses membres sont condentiels, mme si la scurit informatique du rseau social est un gruyre, Google nira pas collecter ces informations. Notre attention devra donc se porter sur les sites permettant le libre accs tous. Outre le jugement de chacun, pour ce livre nous avons retenu de suivre les indications dun site : http://www.socialmeter.com.

159

Rfrencement et Web 2.0

Ce site est cens donner un score de prsence dURL dans les rseaux sociaux accessibles tout bot ou tout internaute non membre. Peu importe que les informations donnes par cet outil soit justes ou non. Il nous sert juste de l conducteur. Testons-le sur www.lemonde.fr.

c Fig. 5.1 : Site web lemonde.fr : ses backlinks visibles dans les rseaux sociaux selon socialmeter.com

Il est donc possible de cartographier les URL dposes dans divers rseaux sociaux. Facilitons le travail des internautes en leur mettant disposition une barre leur permettant de se connecter dun simple clic sur leurs rseaux sociaux favoris. Ce serait intressant de disposer de statistiques sur lusage de cette barre. Le site web http://www.addthis.com fournit un tel outil (il y aussi http://justaddme.com/ ainsi que http://www.letsgetsocialnow.com/ : Voici un JavaScript prt lemploi pour permettre de bookmarker dun seul clic lURL en cours :
<!-- AddThis Button BEGIN --> <script type="text/javascript"> var addthis_pub = "VotreIdDeCompte chez addthis.com";

160

Rseau social et rfrencement

</script> <a href= "http://www.addthis.com/bookmark.php" onmouseover="return addthis_open(this, , [URL], [TITLE])" onmouseout="addthis_close()" onclick="return addthis_sendto()"> <img src="http://s7.addthis.com/static/btn/lg-share-en.gif" width="125" height="16" border="0" alt="" /> </a> <script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"> </script> <!-- AddThis Button END -->

Un compte permettant de suivre les clics des internautes.

c Fig. 5.2 : Suivi des clics de mise en rseau social sur Addthis.com

161

Rfrencement et Web 2.0

Addthis permet de personnaliser, dans certaines limites, la barre cliquer. Ci-aprs, voici un exemple :
var addthis_pub = "VotreIdDeCompte chez addthis.com"; addthis_brand = Crer sa Boite; addthis_options = favorites, email, yahoobookmarks, digg, delicious, myspace, facebook, google, live, twitter, yahoobkm, linkedin, blogmarks;

Le site web exemple ne sera pas quip de cette barre de boutons AddThis. En effet, il faut ouvrir un compte pour avoir un JavaScript capable de suivre les clics. Il est trs facile dinstaller ce JavaScript. Lautre technique consiste mettre en uvre sa propre barre de boutons ; un principe simple que chaque codeur pourra ensuite dvelopper loisir :
j j

un pictogramme reprsentant le rseau social ( rcuprer sur le site web du rseau social) ; un onclick lance lURL du rseau social o il faut se connecter en transmettant lURL o linternaute est prsent.

Ce code est insr dans la fonction MenuGauche() de php_inc/MiseEnPage.inc.php. Cest pour cela que les guillemets sont prcds de backslash :
<p> Partagez <a rel=\"nofollow\" style=\"text-decoration:none;\" href=\"http://www.facebook.com/\" onclick= \"window.open (http://www.facebook.com/sharer.php?u= +encodeURIComponent(location.href) +&t=+encodeURIComponent(document.title)); return false;\" title=\"Bookmark to: Facebook\"> <img style=\"padding-bottom:0px;padding-top:0px;\" src=\"artpackage/facebook.gif\" alt=\"Bookmark : Facebook\" name=\"Facebook\" border=\"0\"> </a> </p>

162

Interactivit Web 2.0 et rfrencement automatis

5.3 Interactivit Web 2.0 et rfrencement automatis


Nous avons vu les diffrents avantages engager le dialogue avec les internautes sur chaque page du site. Coder une telle approche na rien de complexe malgr quelques petits problmes de codage rsoudre. Dans notre site web exemple, nous allons nous concentrer sur un article qui vous servira de test : http://localhost/BookN2/V1-00/article/
deduire-repas-restaurant-chef-entreprise.html&src=Fiscalite-entreprise

chacun dadapter cette URL son environnement de dveloppement personnel.

c Fig. 5.3 : Article servant dexemple. Cliquer pour poser une question

Lobjectif sera de permettre un internaute de poser une question ou de poster un commentaire sur le contenu dun article affich par zoom.php. Un lien permet de lancer un formulaire de saisie. Volontairement, pour sparer les codes sources, nous avons sorti ce formulaire vers une page autonome. Le formulaire aurait pu tre intgr la page elle-mme. Cela aurait t plus pratique.

163

Rfrencement et Web 2.0

c Fig. 5.4 : Formulaire de saisie du post

Ce formulaire, trs simple, permet classiquement de saisir un commentaire. Si on remplit les champs obligatoires, le post sera pris en compte immdiatement par le site.
c Fig. 5.5 : Page Merci retour possible vers la page commente

Une classique page de remerciement, isole dans un script PHP, an de pouvoir utiliser son URL unique pour tracer des statistiques via Google Analytics, par exemple. Un lien permet de revenir vers la page commente lorigine.

Dtails des algorithmes


Seuls les articles affichs via zoom.php prsentent un intrt pour dialoguer avec les internautes. Le script zoom.php reoit une modication en charge de :

164

Interactivit Web 2.0 et rfrencement automatis

j j j j

renforcer la cohrence de larticle affich ; rcuprer les variables denvironnement indispensables au bon fonctionnement des diffrents scripts ; lancer les scripts permettant dafficher les diffrents posts dj existants ; proposer un lien pour saisir un post.

La n de notre chier zoom.php devient :


echo </div> ; // div de FIN des BL dynamiques } $expression_clef_strategique = $line["expression_clef"] ; $url_de_zoom = $_SERVER[REQUEST_URI]; MiseEnPage::message_cet_article ($id_Article, $expression_clef_strategique , $url_de_zoom) ; ?> </div> </div> <?php MiseEnPage::bas() ; ?>
j

$expression_clef_strategique = $line["expression_clef"] : nous allons avoir besoin de lexpression cl stratgique de larticle affich. Nous le rcuprons directement dans lenregistrement affich. $url_de_zoom = $_SERVER[REQUEST_URI] : nous aurons besoin de revenir la page commente. Il nous faut mmoriser o nous sommes. On aurait aussi pu recalculer lURL via lID de larticle. Mmoriser lURI de la page prsente quelques avantages en termes de souplesse et dvolutivit. MiseEnPage::message_cet_article($id_Article, $expression_clef_strategique, $url_de_zoom) : on regroupe dans la classe MiseEnPage la gestion des messages

existants pour cet article en particulier. La bibliothque php_inc/MiseEnPage.inc.php reoit la fonction suivante :
public static function message_cet_article($id_article , $expression_clef_strategique, $url_de_zoom ){

165

Rfrencement et Web 2.0

require_once("RecordPost.inc.php"); $url_de_zoom = str_replace("&","|",$url_de_zoom ); print <div class="jcmbparalarge"> <h1>Thme : . $expression_clef_strategique . </h1> <span> <a href="post_affiche_formulaire_saisie.php?id_article= . $id_article .&url= . $url_de_zoom . " rel="nofollow"> Cliquer pour poser une question ou donner un avis sur le contenu de cette page </a> </span> <br /><br/> ; echo <span> Message(s) ou question(s) dj publis </span>; $post = PostHelper::findTousById_Article($id_article); PostHelper::AfficheTousPost($post) ; echo </div> ; // div jcmbparalarge } // fin de fonction message_cet_article

Cette fonction a pour mission :


j j j

dafficher tous les post dj existants pour larticle en cours ; de proposer de commenter larticle en cours. require_once("RecordPost.inc.php"). Cette bibliothque regroupe toutes les fonctions permettant de manipuler des objets type Post. Nous la dtaillons un peu plus loin. $url_de_zoom = str_replace("&","|",$url_de_zoom ). On va transmettre lURI de la page zoom affichant larticle. Or cette URI possde un caractre & incompatible avec une transmission par URL. On remplace & par le caractre US peu usit | (pipe). <div class="jcmbparalarge">. On manipule uniquement des affichages classiques. La feuille de style est l pour permettre toute adaptation de chacun. Elle est dtaille un peu plus loin.

166

Interactivit Web 2.0 et rfrencement automatis

<h1>Thme : . $expression_clef_strategique . </h1>. On renforce la cohrence de la page en affichant entre balises h1 lexpression cl stratgique de larticle. <a href="post_affiche_formulaire_saisie.php?id_article=. $id_article .&url= . $url_de_zoom . " rel="nofollow">. Ce lien emmne linternaute vers

j j

le formulaire de saisie de son post. Pour permettre le retour la page prcise dorigine, on transporte dans lURL diffrentes informations (ID de larticle, URI dorigine). $post = PostHelper::findTousById_Article($id_article). Cette fonction renvoie un tableau dobjets Post. Ce sont tous les Post existant dj pour cet $id_article. PostHelper::AfficheTousPost($post). Cette fonction affiche tous les objets Post de ce tableau dobjets Post.

Examinons la bibliothque de fonction autour de lobjet Post : php_inc/RecordPost.inc .php. Nous nous limiterons aux fonctions utilises dans notre exemple :
<?php // ddie aux manipulations de lobjet Post class PostHelper {

Deux classes sont cres dans ce chier :


j j

Class PostHelper regroupe toutes les fonctions manipulant les objets Post. Class Post regroupe toutes les fonctions crant un objet Post et les classiques

fonctions ajout/mise jour/supprimer vis--vis de la table post_article :


/* * findById rechercher un enregistrement * par son id dans la table */ public static function findById($id) { $query = "select * from post_article where id = ".$id; $result = mysql_query($query); // on stocke le resultat ds $result if ($record = mysql_fetch_object($result)) { // si resultat, $record devient positif et contient tout lobjet enregistrement $post = new Post($record); } else { $post = null; }

167

Rfrencement et Web 2.0

return $post; // on retourne un objet null ou contenant le resultat }

/* * findTousById_Article : renvoie un tableau dobjets Post * null ou avec les N Post afficher pour $id_article */ public static function findTousById_Article($id_article) { $query = "select * from post_article where id_article = ".$id_article ; $result = mysql_query($query) ; if (empty($result)) { $post = null ; } else { $i = 0 ; while ($record = mysql_fetch_object($result)) { $post[$i] = new Post($record); $i++ ; } } return $post; }

findTousById_Article($id_article) recherche tous les posts dun mme article et les renvoie dans un tableau dobjets Post.
/* * AfficheTousPost : affiche * les N post du tableau $post pass en argument */ public static function AfficheTousPost($post) { $i=0 ; echo <br /><br /> ; while ($post[$i]) { echo <div class="jcmbfilet570"> ; echo <b>Publi par : </b> . $post[$i]->nom; echo . $post[$i]->prenom . <br /> ; echo <h2> . $post[$i]->titre_post . </h2> ;

168

Interactivit Web 2.0 et rfrencement automatis

echo <b>Message ou question</b> <p> . $post[$i]->text_post . </p> </div> ; echo <br /> ; $i++ ; } }

AfficheTousPost($post). Dans un conteneur <div>, on affiche chaque objet Post du

tableau dobjets $post :


} // de la class PostHelper

class Post { /* * Attributs de lobjet Post */ public $id; public $id_article; public $nom; public $prenom; public $email; public $text_post; public $titre_post; /*

Notre objet Post est dsormais dni. Chacun pourra lenrichir sa convenance. Par exemple, lajout dun champ date permettrait de noter la date de publication de chaque post :
* Constructeur dun objet : de $record * dans les attributs de lobjet juste cr en mmoire */ public function __construct($record="") { if ($record) { $this->id = $record->id; $this->id_article = $record->id_article; $this->nom = $record->nom; $this->prenom = $record->prenom; $this->email = $record->email; $this->text_post = $record->text_post; $this->titre_post = $record->titre_post; } }

169

Rfrencement et Web 2.0

La commande New de PHP peut construire un objet Post :


/* * create un enregistrement dans la table depuis * lobjet Post courant (this) */ public function create() { $query = "insert into post_article (id_article, nom, prenom, email, text_post, titre_post) values ( ".$this->id_article.", ".$this->nom.", ".$this->prenom.", ".$this->email.", ".$this->text_post.", ".$this->titre_post." )"; mysql_query($query) || die( "ERREUR : MySQL : Impossible create post " . mysql_error() ); } } // de la class Post ?>
j

create() cre un enregistrement correspondant un objet Post dans la table

post_article. Nous sparons la manipulation des donnes des contraintes daffichage. Dans php_inc/ MiseEnPage.inc.php, la fonction message_cet_article appelle le <div class="jcmbparalarge">. Ensuite, cette fonction affiche via de simples balises type h1, h2, span et p. Le comportement et laffichage des contenus grs par ces balises sont pilots par la feuille de style dont voici un extrait :
.jcmbparalarge { width:570px; height: auto; padding: 5px 3px 0 3px; float:right ; } .jcmbparalarge h1 { font-size:14px; color:#2C6A93;

170

Interactivit Web 2.0 et rfrencement automatis

background-color:inherit;height:25px; font-weight:bolder} .jcmbparalarge h2 { font-size:12px; color:#2C6A93; background-color:inherit;height:25px;} .jcmbparalarge p { font-size:12px; color:black; background-color:inherit; border:1px solid grey; padding: 5px 3px 0 3px; font-weight:normal} .jcmbparalarge span { font-size:14px; color:#2C6A93; background-color:inherit;height:25px; font-weight:bolder} .jcmbparalarge a{ color:#2C6A93; background-color:inherit; text-decoration: underline} .jcmbparalarge a:hover{ color:#ffbe33; background-color:inherit; text-decoration:underline} .jcmbfilet570{ width:570px; height: auto; padding: 5px 3px 0 3px; float:right ; border:1px solid #2C6a93;}

La feuille de style du formulaire de notre exemple est drive dun exemple ou dinformations techniques exposs dans ces pages :
http://www.cssdebutant.com/formulaire-css.html ; j http://www.babylon-design.com/site/index.php/2007/09/24/192-boutons-extensibles-css-compatiblestous-navigateurs.
j

La voici :
.cssform p{ width: 400px; clear: left; margin: 0; padding: 5px 0 8px 0; padding-left: 155px; /*width of left column : the label elements*/

171

Rfrencement et Web 2.0

border-top: 1px dashed #2C6A93 ; height: 1%; } .cssform label{ font-weight: bold; color:#2C6A93 ; float: left; margin-left: -155px; /*width of left column*/ width: 250px; /*width of labels. Should be smaller than left column (155px) to create some right margin*/ } .cssform input[type="text"]{ /*width of text boxes. IE6 does not understand this attribute*/ width: 250px; } .cssform textarea{ width: 250px; height: 150px; } /* Bouton avec effet - ne marche pas en IE6 ? */ input[type=submit], input[type=reset] { border:2px outset #EAEAEA ; background-color: #E3E3E3 ; font-weight:bold; color:#2C6A93 ; cursor:pointer; } input[type=submit]:hover, input[type=reset]:hover { border:2px outset white; background-color:white; } input[type=submit]:active, input[type=reset]:active { border:2px inset #A6BEDE; background-color:#2C6A93; color:black; }

172

Interactivit Web 2.0 et rfrencement automatis

En cliquant sur le lien pour ajouter un post la page, nous accdons au formulaire, volontairement mis lcart du code source de zoom.php. Chaque fois quon isole les codes sources dans des chiers spars, se pose la question des passages darguments et de la compatibilit avec le rfrencement sur Google. Le plus simple est de tout grouper dans une page mais cela alourdit le code source. Dans notre exemple, nous sommes dans un formulaire dont lURL sera propre chaque page article de dpart. Pour viter de massifs duplicate contents, les pages formulaires sont en noindex, nofollow, et tout lien menant elles sera en rel="nofollow". Voici le code source du formulaire :

c Fig. 5.6 : Le formulaire afficher <?php // post_affiche_formulaire_saisie.php require_once("php_inc/MiseEnPage.inc.php"); $title_page = "crer sa boite - formulaire poster un commentaire" ; $meta_description_content = "crer sa boite - formulaire poster un commentaire" ; $rep = "./" ; $follow_index = 0 ; // pas de dup content

173

Rfrencement et Web 2.0

Pour viter des duplicate contents cause de ce formulaire identique pour tous les articles, on le passe en noindex, nofollow :
MiseEnPage::haut($title_page , $meta_description_content , $rep , $follow_index ) ; ?> <div id="sousban"> </div> <div id="pagegauchetete"> <?php MiseEnPage::MenuGauche() ; if (isset($_GET["id_article"])) $id_article = $_GET["id_article"]; if (isset($_GET["url"])) { $url_de_zoom = $_GET["url"]; // o il faudra retourner }

On mmorise les deux arguments passs en paramtres : id_article et url. En fait, lURL contient uniquement lURI de la page zoom.php dorigine. Comme nous le verrons dans le prochain script, cest suffisant et cela scurise notre application. En effet, une URL ne peut dpasser 255 caractres. En utilisant strictement lURI bien plus courte que lURL complte, on reste loign de cette limite :
?> </div> <!-- fin page gauche tete -->

<div id="pagecentretete"> <h1> Poser une question ou commenter un contenu de page </h1> <form id="Formulaire_saisie_post" name="Formulaire_saisie_post" method="post" class="cssform" action="<?php $s = post_traite_formulaire_saisie.php ?id_article= . $id_article . &url= . $url_de_zoom ; echo $s ;?>" >

La seule mthode pour passer une URL avec des arguments dans un champ action dune form consiste faire un echo PHP de la chane de caractres :
<p> <label for="nom_posteur">Nom : <br /><i>Obligatoire</i></label>

174

Interactivit Web 2.0 et rfrencement automatis

<input type="text" name="NOM" value="" /> </p> <p> <label for="prenom_posteur">prnom : </label> <input type="text" name="PRENOM" value="" /> </p> <p> <label for="email">Votre Email : <br /><i>Obligatoire, ne sera ni affich, ni communiqu</i></label> <input type="text" name="EMAIL" value="" /> </p> <p> <label for="titre">Titre de votre question ou avis </label> <input type="text" name="TITRE_POST" value="" /> </p> <p> <label for="comments">Votre question ou commentaire : </label> <textarea name="TEXT_POST" rows="10" cols="40"></textarea> </p> <div style="margin-left: 250px;"> <input type="submit" value="Validez" /> <input type="reset" value="Annuler" /> </div> </form> </div> <!-- fin pagecentre tete --> <?php MiseEnPage::bas() ; ?>

Le reste du formulaire est classique et ne demande pas de remarque particulire. Un clic sur Envoyer lance le script post_traite_formulaire_saisie.php.
<?php // post_traite_formulaire_saisie.php require_once("php_inc/init.inc.php"); require_once("php_inc/RecordPost.inc.php"); require_once("php_inc/MiseEnPage.inc.php");

175

Rfrencement et Web 2.0

Les diffrentes bibliothques dont nous auront besoin :


// mise en page pour affichage des messages $title_page = "Page - suivi Post"; $meta_description_content = "Page - suivi Post"; $rep = "" ; $follow_index = 0 ; // formulaire pas dindexation

On ne fait pas indexer cette page par Google :


MiseEnPage::haut($title_page , $meta_description_content , $rep , $follow_index ) ; if (isset($_GET["id_article"])) $id_article = $_GET["id_article"]; if (isset($_GET["url"])) { $url_de_zoom = $_GET["url"]; // o il faudra retourner }

On mmorise les informations pour construire le lien qui nous renverra vers la page dorigine :
if( ($_POST[NOM] == "") || ($_POST[EMAIL] == "") ) { $champ_non_saisi = "Nom ou email non saisi ... Ces donnes sont obligatoires - Merci de les saisir" ; }

Si les informations obligatoires ne sont pas saisies, on bloque :


else { $post = new post() ; // crer objet vide

On cre en mmoire notre objet Post, $post :


// puis on linstancie avec le formulaire $post->id_article = $id_article ; $post->nom = ereg_replace("<[^>]*>", "", trim(strip_tags($_POST[NOM])) ); $post->prenom = ereg_replace("<[^>]*>", "", trim(strip_tags($_POST[PRENOM])) ); $post->email = ereg_replace("<[^>]*>", "", trim(strip_tags($_POST[EMAIL])) );

176

Interactivit Web 2.0 et rfrencement automatis

$post->titre_post = ereg_replace("<[^>]*>", "", trim(strip_tags($_POST[TITRE_POST])) ); $post->text_post = ereg_replace("<[^>]*>", "", trim(strip_tags($_POST[TEXT_POST])) );


j j

ereg_replace("<[^>]*>", "", trim(strip_tags($_POST[TEXT_POST])) )renvoie

j j

une chane de caractres exempte de tout code HTML ou autres. ereg_replace("<[^>]*>" retire toute balise HTML. Cette fonction est en doublon apparent avec strip_tags(). une (lointaine) poque, strip_tags() ntait pas aussi able quactuellement. Trim()supprime les caractres invisibles comme les tabulations, par exemple. strip_tags()retire toute balise HTML ou PHP.

Cela scurise le fonctionnement de notre site web, par exemple :


j j

aucun code HTML perturbant laffichage ; aucun caractre invisible perturbant laffichage ou le fonctionnement des scripts PHP.

$post->create(); // ecrire dans la table MySQL

Lobjet Post cr depuis le formulaire saisi est ajout la table post_article.


} if (!$champ_non_saisi) { $url_de_zoom = str_replace("|","&",$url_de_zoom ); // on remet le & filtr par $_get

Le caractre & est ltr lors des passages darguments. On ne se retrouve donc pas avec des URI amputes quand on les passe en argument. En remplaant & par | puis en inversant quand on a besoin de lURI originale, on rgle ce problme.
Print " <h1> Merci </h1> <h3> Nous vous remercions davoir pos une question ou davoir comment cette page <br /><br /><br /> <a href=http://". $_SERVER[HTTP_HOST] . $url_de_zoom . "> Retour la page dorigine </a>

177

Rfrencement et Web 2.0

On reconstruit lURL complte compose de http:// concatne au nom de domaine $_SERVER[HTTP_HOST] puis lURI dorigine. On ne peut pas faire autrement. En effet, un JavaScript pilotant lhistorique pour faire deux coups en arrire ne recharge pas la page. Donc le post nouvellement ajout ny gure pas. Voil pourquoi on mmorise depuis le dbut lURI de notre page de dpart. Ctait pour pouvoir y retourner avec un rechargement complet de la page donc avec le post juste ajout.
</h3>" ; } else { Print " <h1> Erreur de saisie </h1> <h3> Nom ou email non saisi ... Ces donnes sont obligatoires Merci <br /><br /><br /> <a href=javascript:history.back()> Retour au formulaire contenu dj saisi maintenu</a>

Linternaute peut retourner au formulaire dont la saisie a t conserve. Il peut ainsi corriger et cliquer une nouvelle fois :
<br /><br /> <a href=index.php> Retour la page daccueil </a> </h3> "; } MiseEnPage::bas() ; ?>

5.4 Rsum de ce chapitre


Nous avons vu comment intgrer dans le rfrencement et proter de deux parties du Web 2.0 :
j j

les liens sociaux ; linteractivit avec les internautes.

Dans notre exemple, nous nous sommes contents de grer des questions ou commentaires dinternautes par page publiant un article complet.

178

Rsum de ce chapitre

Dautres aspects, dautres "jeux" incitant les internautes intervenir sur une page du site, et ainsi contribuer son rfrencement, pourront tre mis en uvre :
j j

Notez ce contenu. Commentez votre note, etc.

Nous avons vu quil valait mieux viter de laisser Google indexer les formulaires. Il est si facile de crer des duplicate contents ds quon code avec des passages darguments en URL. Une rgle est ainsi rappele : pas de passage darguments en URL ou ces pages ne sont pas soumises indexation auprs de Google. Nous avons entraperu une autre approche technique : plutt que de prvoir N pages se rpartissant les scripts, uniez tout sur une page. Cela simplie les passages darguments en URL. Cela peut poser quelques problmes avec Google Analytics par exemple (ncessit de disposer dune URL ddier un remerciement pour pouvoir suivre des objectifs). Les algorithmes de base vus dans ce chapitre sont dclinables linni selon vos cas et besoins particuliers.

179

6
6.1 Symptmes et causes. .................................. 6.2 Pages mal positionnes : dautres causes ............ 6.3 Flash et le rfrencement dans Google .............. 6.4 Rsum de ce chapitre ................................. 182 184 193 195

Pages absentes ou mal positionnes dans Google


D
e nombreuses causes isoles ou cumules peuvent conduire une ou plusieurs pages absentes de lindex de Google ou trs mal positionnes. Elles sont dorigine techniques ou rdactionnelles ou les deux la fois. Les causes techniques sont du domaine du webmestre (HTML, maintenance) ou du codeur (script PHP). Ces causes sont lorigine de blocages des bot ou de lapplications de pnalits par Google envers ces pages. Nous allons lister dans ce chapitre lventail le plus large possible de ces causes ainsi que les approches pour se dgager de ces problmes.

Pages absentes ou mal positionnes dans Google

6.1 Symptmes et causes.


Un webmestre codeur peut se heurter diffrents problmes qui prsentent tous les mmes symptmes, trs vagues, sur une ou plusieurs pages dun site web :
j j

pages absentes de lindex de Google ; pages mal positionnes sur leurs expressions cls.

Gnralement, plusieurs causes se combinent pour aboutir un de ces deux symptmes. Refaisons un point sur ce que nous avons vu dans les chapitres prcdents pouvant occasionner ce type de symptme. Nous tudierons ensuite les nombreuses autres causes.

Les pnalits distribues par Google


La liste nest pas exhaustive :
j

j j j

Dsindexation de page : la page est difficile trouver. La commande site permet de lafficher ainsi quune recherche sur un bloc entier de la page. La Google bar indique une mesure grise. Dsindexation partielle : sur certaines phrases pourtant prsentes en contenu, la page est trs difficile faire apparatre en SERP de Google. Quand elle apparat, elle est seule dans le rsultat. Liste noire : toutes les pages du site sont inexistantes dans lindex de Google. Page absente mais dautres pages du site sont prsentes. Le retrait de Page rank. Les pages suspectes davoir des liens trop incohrents voient leurs Page rank fondre.

Les dsindexations sont des pnalits Google classiques pour diffrentes formes et diffrents volumes de duplicate contents. La mise en liste noire sanctionne des optimisation trop agressives, typiquement du spamdexing. Il ne vous reste plus qu faire une demande de rinclusion. Nous conseillons vivement de suivre les recommandation de cette page : http://www.mattcutts.com/ blog/reinclusion-request-howto/. Une page absente quand dautres pages du site sont prsentes indique potentiellement :
j

Une inaccessibilit de la page par un lien valide. Cherchez les liens en JavaScript ou en Flash vers cette page, vous les trouverez. Cherchez des liens en dur classiques ; vous devriez dcouvrir quils sont inaccessibles aux bots de Google. Il est donc impossible davoir la page indexe.

182

Symptmes et causes.

La page est enfouie trs profondment dans une hirarchie de niveaux. En conjuguant cela avec un Page rank faible, vous obtenez une page qui mettra du temps avant dtre prise en compte dans lindex de Google.

Les causes dj vues


Nous avons vu dans les chapitres prcdents plusieurs causes pouvant entraner des pnalits contre des pages dans un site web :
j

j j j j

Duplicate content : de nombreuses maladresses en gestion de contenus ou en programmation peuvent aboutir la dsindexation dune partie des pages dun site. Les diffrents paragraphes des chapitres prcdents sur lURL rewriting, les URL avec passage darguments, les copis/colls maladroits traitent de ce sujet. Une optimisation trop agressive ou maladroite dclenchant un spamdexing et entranant des pnalits de Google. La mise en uvre de volumes de liens incohrents avec vos contenus faisant passer vos pages pour des fermes de liens louer, des fermes de paidlinks. Avoir mis en uvre des techniques de triche, hors paidlinks, et stre fait prendre par Google. .htaccess mal cod entranant des duplicate contents.

Labsence de qualit dans le travail de rfrencement noccasionne pas uniquement des pnalits actives de Google. Cela peut tout simplement faire effondrer le positionnement de toutes les pages du site sur tous les mots-cls viss. Illustration :
j j j j

Un site web peut avoir une page daccueil avec un Page rank de 5. De nombreux backlinks pointent vers lui. Toutes les pages internes possdent un Page rank confortable, de 2 4. Aucune pnalit nest prsente sur une page du site. Mais toutes les pages du site sont absentes de toute expression-cl, sauf la page daccueil sur le nom de domaine du site. L, cest dsastreux.

Nous avons vu au chapitre 1 diffrentes approches mettre en uvre pour russir un rfrencement. Ngliger ces approches nimplique pas des pnalits actives de Google. Cela peut simplement signier une absence en positionnement faute de rfrencement. Vous pourrez avoir tous les backlinks du monde, cela ne changera rien. Vos pages seront mal positionnes faute de rfrencement de qualit.

183

Pages absentes ou mal positionnes dans Google

Positionnement et qualit du rfrencement


Un positionnement russi passe par un rfrencement de qualit. Sans un travail de rfrencement russi sur lensemble des pages du site, sans une stratgie globale de rfrencement, un site web aura plus ou moins de mal optimiser le positionnement de ses pages sur des expressions cls.

Nous avons vu que le rfrencement puis le positionnement russi de pages prcises sur des expressions cls prcises est issu de la qualit du travail de rfrencement sur toutes les pages du site. Si une partie des pages reoit des pnalits, cest toute la stratgie de rfrencement qui est affecte. Ainsi, des causes apparemment indirectes peuvent se cumuler avec dautres erreurs ou maladresses et aboutir un positionnement rat.

6.2 Pages mal positionnes : dautres causes


La maturit croissante des webmestres et des codeurs en rfrencement, la cration massive de nombreux postes de traffic manager en charge de superviser la cration de trac dont le rfrencement naturel, aboutissent une comptition plus professionnelle sur les expressions cls.

Les sites concurrents


Formul autrement, cela revient dire que vous tes peut tre mal positionn malgr vos efforts parce que vos concurrents sont meilleurs que vous :
j

Ils ont commenc avant vous et les algorithmes de Google donnent une forme de "prime" lanciennet, visant essentiellement ceux qui sont arrivs les premiers en page 1 des SERP. Chaque internaute qui clique sur une URL depuis une SERP Google enrichit des bases de statistiques et cette URL se trouve renforce dans son positionnement. Difficile dobtenir ce genre de bonus si on est justement absent des places en or dans les SERP de Google. Si lexpression cl vise fait lobjet dune concurrence acharne entre de nombreux acteurs, le moindre dfaut dans le rfrencement des pages aboutit un recul immdiat et important. Un seul critre incohrent et cest un recul immdiat de plusieurs places, ce qui entrane un taux de clics moindre et donc, si rien nest fait, le dbut dun dcrochage possible hors des places en or dans les SERP.

Le nombre dexpressions cls propres une profession est plus ou moins limit. Quand on loue des bureaux par exemple, le nombre dexpressions cls est trs limit. Vu le nombre de socit louant des bureaux, vides ou meubls, sur Paris par exemple, on voit

184

Pages mal positionnes : dautres causes

tout de suite que ds que toutes ces socits auront professionnalis leurs sites et le rfrencement associ, la bataille pour "location bureau Paris" va devenir acharne.

Les backlinks
Les sites concurrents ont des backlinks de meilleures qualit et en plus grand volume que votre site. Si vos concurrents grent des tags cloud et pas vous, sils ont automatis leur rfrencement et pas vous, vous savez ce quil vous reste faire. Mais il y a aussi les backlinks externes. Nous quittons alors le domaine de ce livre et passons au web marketing. Je vous renvoie sur ce sujet au Guide Complet du rfrencement sur Google dit chez Micro Application.

JavaScripts
Tout lien insr dans un JavaScript est invisible pour un bot de Google. Si tous vos menus sont en JavaScript, il va falloir prendre dautres mesures :
j j

remplacer ces menus droulants JavaScript, en gnral trs sympathiques et trs jolis, par lquivalent en HTML par exemple ; laisser les menus en place et doubler ces menus par des arborescences de liens en bas de page.

c Fig. 6.1 : Menus en arborescence de liens en bas de page

Notre prfrence va paratre surprenante ; la deuxime option : doubler les menus JavaScripts par les liens en bas de page.

185

Pages absentes ou mal positionnes dans Google

Voici pourquoi :
j j

Les menus JavaScript sadressent exclusivement aux internautes humains. On peut faire tout ce que lon veut. Aucun impact sur le rfrencement. Les arborescences de liens en bas de page sont peu visibles pour les humains. Ils ne choquent personne. On vient simplement de dcliner une forme de tags cloud, de nuage de liens. Il nest pas vident de russir coder un menu droulant en HTML, qui soit lisible par tous les navigateurs, valid par le web marketing, accessible techniquement aux bots des moteurs de recherche et qui contiennent les mots-cls dont le rfrenceur a besoin.

Personne ne sait exactement comment ragit et comment ragira Google sur les liens en bas de page. Existe-t-il des pnalits quand ils ne sont pas en haut de page ? Quelques tests nont rien montr de tel. Par prudence, il serait bien de :
j j j

Faire apparatre des lments aprs larborescence de liens : un pied de page avec "mentions lgales " et autres rptitions, des lments de charte graphique, etc. crire ces liens dans une taille de police de 10 minimum. Appliquer les mme rgles de prudences en lutte contre le duplicate content que pour les nuages de liens. Lordre des liens doit changer, les mots-cls doivent varier, le texte des liens doit lgrement changer chaque page.

Au vu de nombreux audits et tests, actuellement, le pire ennemi dune arborescence de liens en bas de page est le duplicate content et non le risque de voir Google ne pas prendre en compte des liens placs trop bas dans une page.

Frame
Le traitement technique pour les frames est trs simple : la poubelle. Les raisons dexister de cette technique ont disparu :
j

Dbit lent et cher du rseau : qui se souvient de RNIS 2 canaux B 64 kbit/s facturs par France Telecom au double du tarif communication nationale pour un dbit rel oscillant entre 1,5 et 5 fois un modem classique ? Les notes Internet taient de 2 000 francs HT/mois en moyenne. (En tenant compte de lination, cela fait 500 600 euros HT/mois daujourdhui.) Les frames diminuaient le besoin de bande passante. De tout petits crans sur les PC et les Mac.

De nombreuses tudes ont montr que les usagers naimaient pas les sites utilisant des frames.

186

Pages mal positionnes : dautres causes

Des spcialistes ont dvelopp des techniques pour russir le rfrencement de sites utilisant des frames : pourquoi pas. Mais si on doit conjuguer la complexit des frames et celle automatisant le rfrencement tel quon le voit dans cet ouvrage, les codes sources vont prendre un fort embonpoint prjudiciable une maintenance aise et rapide.

Les limites des feuilles de style


Google apprhende mal les feuilles de style, sauf quand il sen donne la peine, cest--dire rarement et gnralement pour chercher des fraudes. Nous devons donc rester sur la premire option : faire simple et comprhensible en feuille de style an dtre sr que Google interprte correctement les balises Hn. Si vous rednissez les balises Hn de manire invisible Google via la feuille de style, ou, autre variante, comme lexemple ci-aprs, elles seront invisibles comme balises Hn pour les bots de Google.
<span class="titre4"> titre avec mots clefs </span>

Votre codeur XHTML/CSS a dni des classes titres propres au site en feuille de style. Elles sont srement trs jolies mais sans utiliser les balises Hn, le rfrencement de votre page sera srieusement handicap. Un titre devrait tre cod ainsi pour quil soit accessible techniquement et smantiquement Google :
<div class="maclasse"> <h1>Titre avec mots clefs </h1> <span> Titre destins aux internautes humains, jeux de mots, humour etc. autoris ici </span> </div>

avec une feuille de style qui ressemblerait ceci :


.maclasse { width:570px; height: auto; padding: 5px 3px 0 3px; float:right;}

On dnit une classe. Dans celle-ci, on va rednir toutes les balises notre convenance, graphique, mais aussi pour le rfrencement :
.maclasse h1 {

187

Pages absentes ou mal positionnes dans Google

font-size:14px; color:#2C6A93; background-color:inherit;height:25px; font-weight:bolder;}

Cette balise H1 est personnalise pour le site mais, avec une taille de 14px, elle est plutt discrte pour une balise de cette importance. Elle nous permettra de faire des titres truffs de mots-cls mais relativement peu visibles.
.maclasse h2 { font-size:12px; color:#2C6A93; background-color:inherit;height:25px;}

Mme chose pour cette balise H2 ; elle est plutt discrte en visibilit sur une page. An de ne pas abuser des balises H1 sur une page, on pourra utiliser bon escient cette dnition de H2.
.maclasse p { font-size:12px; color:black; background-color:inherit; border:1px solid grey; padding: 5px 3px 0 3px; font-weight:normal;}

Cette dnition est classique pour du texte en paragraphe :


.maclasse span { font-size:20px; color:#2C6A93; background-color:inherit;height:25px; font-weight:bolder;}

Ce span, lui, est exceptionnel. Colori, 20px en taille de font, gras, un texte entre balises <span> sera trs visible sur la page. Lusage en est tout trouv : il servira pour les titres destins aux humains. Vous pourrez faire usage dhumour, de jeux de mots, etc. Pour Google ce nest que du texte, quelques mots bizarres noys dans les mots de toute la page. Les consquences ngatives sont inmes, ngligeables. Rsumons-nous : on a bien redni les balises Hn et elles restent lisibles comme balises Hn, ce qui est fondamental pour le rfrencement russi dun site.

188

Pages mal positionnes : dautres causes

Splash Page

c Fig. 6.2 : http://europa.eu/ La splash page la plus clbre dEurope

Les splash pages permettent de regrouper des informations directionnelles sur la page daccueil. Ici, sur le site de lUnion europenne, le choix est offert de choisir parmi les 22 langues actuelles de lUnion europenne (le Groenlandais nest pas encore une langue officielle ; inutile de la chercher dans la liste). Une splash page est trs pratique quand on ne sait pas trop comment rediriger un internaute humain : choix de la langue, choix du mtier de lentreprise, etc. Mais une splash page est une catastrophe pour le rfrencement dun site :
j j

Elle bloque avec des informations sans intrt la page daccueil qui aurait mieux faire. Elle gaspille le Page rank. Chaque saut dans un niveau hirarchique cote en gnral un point de PR, en tout cas sur un site hirarchis, sans nuages de liens et sans interfrences avec des backlinks externes.

189

Pages absentes ou mal positionnes dans Google

Impossible de placer un nuage de liens sur une telle page : elle nest cohrente avec rien.

Vous laurez compris : lUnion europenne peut se permettre une splash page ; faute de concurrence, les inconvnient cits prcdemment ne feront gure de mal son trac. Le site web dune PME lui ne peut se permettre un tel luxe pour un usage aussi inutile et superu.
Splash page
On peut dclarer comme Splash page toute page daccueil ne contenant pas de texte ou presque pas de texte et servant rediriger les internautes vers des sous-choix : par langues, par produits, par types de spectacle, etc.

Il y a deux approches pour contourner une splash page :


j

On la laisse et on ajoute un copieux bas de page an de lester cette page en volume de caractres.

c Fig. 6.3 : Un bas de splash page sous forme dun copieux texte

La page daccueil du site de la gure C06-30 a tendance tre une splash page. Pas assez de texte unique, texte de page daccueil pas assez ou mal centr sur les mots-cls, nous avons l une splash page. En ajoutant un copieux bas de page strictement composs de textes uniques et utilisant les mots-cls du mtier, de balises Hn, le positionnement de cette page daccueil a russi.
j

Lautre approche : on conoit une page daccueil intgrant la redirection des internautes vers des sous-destinations.

190

Pages mal positionnes : dautres causes

Pour le codeur, le problme est simple rsoudre. Soit la page est conue une nouvelle fois pour liminer la splash page, soit il suffit de coder une zone de Hn et de <p> pour permettre le lestage en mots-cls et autres textes de la home page.

Une page : une langue


La norme W3C permet de mixer les langues sur une mme page du ct du contenu. Mais la norme impose une seule langue pour la partie "technique" : title de page, meta description. Google fait plus simple : une page ne peut tre quen une seule langue, aussi bien pour la partie technique que pour la partie contenue. Pire, Google demande de spcialiser un rpertoire par langue. Si vous mlangez des langues sur une mme page, vous risquez davoir de mauvaises surprises en positionnement.

Spamdexing involontaire
Que ce soit en JavaScript ou en script PHP ct serveur, voici la mise en uvre de divers algorithmes pas assez tests peut aboutir la cration de spamdexing :
j j

Police de caractre ayant la mme couleur que le fond de page. Texte variant selon le prol de linternaute : il accepte ou non les cookies sur une page ayant la mme URL. Attention, cela revient afficher un texte selon lorigine, un moteur de recherche ou un humain : nous avons alors un cloaking. La mme base MySQL fait fonctionner diffrents sites avec les mme donnes.

Les possibilits derreurs sont vastes. Les calques DHTML sont une source doptimisation intressante mais aussi de bogues dgnrant en spamdexing. Un texte reste verrouill en hidden sans aucune possibilit de le faire revenir en visible. Vous avez un spamdexing trs facile dtecter.

Dtecter une triche : facile !


Pour illustrer la facilit avec laquelle on peut dcouvrir une triche implante dans un programme, voici un algorithme parmi de nombreux autres en charge de traquer les scripts oubliant de passer un texte, index par Google, en visible pour linternaute. La thorie des graphes sapplique au fonctionnement du Web. Rappelez vous, un point = une page et un arc = un lien. On peut aussi utiliser cette branche des mathmatiques pour analyser un code JavaScript manipulant les calques. Rien de plus simple.

191

Pages absentes ou mal positionnes dans Google

Un point = un calque. Un arc = le basculement dun tat vers un autre : visible vers hidden et inversement. Un bot anti-fraude suit le l de la page et cartographie, dans le code JavaScript, les calques et les changements dtat. Un programme sur le serveur transpose ceci dans une matrice. Trs vite, les boucles non fermes sur hidden apparaissent. Chacune de ces boucles non fermes correspond un calque restant bloqu sur hidden, donc un texte invisible linternaute, mais ce mme texte est lu par les bot "normaux" de Google et index comme du texte normalement apparent aux humains : spamdexing dtect. Cette technique ou des variantes sont appliques dans de nombreux domaines du gnie logiciel, notamment pour abiliser des codes critiques : missiles, fuses, avionique Pour conclure cette illustration : aucune technique de triche en programmation ne peut rester indtectable. Pour aller chercher les limites de Google, il faut aller sur des terrains "mouvant" o lhumain, le code et lenvironnement se mlangent et saturent ses algorithmes anti-fraudes. Cest un des points abords au chapitre suivant.

Optimisations trop agressives


On rentre partiellement dans la Google ction. Sous ce doux terme, on dsigne des techniques black hat qui consistent tricher selon les mcanismes que nous avons dj abords. Voil pour la partie relle. La technique la plus rpandue, trs facile mettre en uvre, consiste noyer sous un mme mot-cl une page datterrissage. Cette erreur est assez rpandue. Pour la partie ction, voici des "optimisations trop agressives" non encore traques par Google, mais qui pourraient le devenir un jour. Lautomatisation des pages permet de personnaliser les balises ALT et TITLE dun visuel pour chaque page en fonction du contenu. Un petit rappel de la norme :
j j j

ALT est une balise utilise par les terminaux pour mal voyant. Elle "traduit" le

contenu dune image. TITLE est une balise info bulle destination des voyants. Elle complte le visuel par un texte saffichant quelques secondes ct de limage. En clair, il ny a aucune raison que ces descriptifs changent pour chaque page pour un mme visuel.

192

Flash et le rfrencement dans Google

Utiliser les script PHP/MySQL pour personnaliser outrance le contenu dune page en personnalisant les balises des images rptes sur chaque page du site est donc un pas trop vite franchi. On peut aussi personnaliser les pictogrammes, les traits, etc. L, on obtient une optimisation trop agressive et facile dcouvrir. Les mme chiers images changent de balises ALT et TITLE chaque page du site. Puisque cest facile dcouvrir, utilisons une base MySQL et un script PHP pour changer les noms des chiers images et les personnaliser pour chaque page en mme temps que leurs balises ALT et TITLE. Mauvaise ide. En effet, lheure o Google tente de naliser un logiciel capable dindexer une image daprs son contenu, il serait maladroit de laisser une mme image dans des chiers diffrents pour des pages distinctes et avec une personnalisation adapte chaque page. Nul doute que cela fonctionnera un certain temps. Seul Google sait combien de temps il laissera des black hat ouer ainsi ses algorithmes avec des optimisations trop agressives.
Une optimisation pour demain
Utiliser une bibliothque graphique pour automatiser la personnalisation des images elles-mmes en fonction du contenu de la page est une ide creuser, prometteuse. Sur ces images ainsi modies, on pourra greffer sans crainte une personnalisation des balises ALT et TITLE.

6.3 Flash et le rfrencement dans Google


La construction dune animation ash peut tre classe en deux parties distinctes :
j j

lanimation elle-mme ; la navigation entre animation, textes et autres objets.

La nuance est importante en rfrencement. Il nest pas possible de rfrencer correctement un "site" en ash, cest--dire des animations interconnectes entre elles via des liens ash. Les philosophies de dveloppement de programmation sont trop loignes des normes Google et du W3C pour permettre une adaptation aise de lun lautre. Mme avec laide de Adobe, Google pourra difficilement atteindre la qualit technique quil a atteint sur le HTML classique. Dautres raisons militent pour une prise en compte minore des animations ash :

193

Pages absentes ou mal positionnes dans Google

j j j

Tant que Google ne pourra pas injecter du AdWords dans les animations ash, rfrencer des sites ash complets revient se tirer une balle dans le pied. Les SEO black hat pourraient proter de la situation pour mettre au point des stratgies en charge de ouer les algorithmes de Google. Nous ne voyons pas comment un lien social ou un bookmark pourrait pointer une partie prcise lintrieur dune animation ash. Cest loppos de la philosophie Google actuelle.

En revanche, des animations ash simples, stockes individuellement sur des pages HTML relies entre elles par de classiques liens offrent dexcellentes perspectives. On peut rfrencer ces pages. En effet, petit petit Google devrait rentrer dans les animations simples pour y lire certaines donnes. Mais surtout, le plus important est que nous disposons de la page elle-mme pour effectuer le travail classique de rfrencement. Et puis touche nale, en considrant une animation ash comme un objet multimdia parmi dautres, on ne contrarie en rien la stratgie de Google. La lecture des informations publies par Google conforte cette approche quand on les lit entre les lignes.

SWFobject2 pour indexer du Flash


http://code.google.com/p/swfobject/wiki/documentation sur lequel on trouve lURL de la traduction franaise de SWFobject2 : http://egypte.olympe-network.com/swfobject-francais.html.

SWFobject2 constitue un indniable progrs pour les dveloppeurs. Mme les rfrenceurs y trouvent des amliorations. En dtaillant la nouvelle formule SWFobject2, on dcouvre de nombreuses amliorations concernant lintgration de Flash au monde HTML, mais cest hors contexte du prsent livre et les quelques possibilits offertes en rfrencement. Il est retenir aussi que linitiative SWFobject2 semblerait devenir le standard pour lancer une animation Flash. Un contenu alternatif peut tre dni et soumis pour chaque animation ash au navigateur de linternaute. On rejoint la balise ALT pour les images en HTML. Le contenu alternatif lanimation Flash est soumis Google et aux autres moteurs de recherche. En examinant de prs ce contenu alternatif, nous avons :
j j

un bloc de texte ; associ lanimation dun bloc.

194

Rsum de ce chapitre

En clair, il y a tout ce quil faut pour aider au rfrencement dune animation Flash simple. Si votre animation Flash contient la totalit de votre "site", vous aurez juste un bloc de texte pour dcrire le tout, ce qui se rvlera totalement insuffisant face des concurrents ayant des sites en HTML. Il ne vous restera plus qu doubler votre site Flash par un site en HTML.

6.4 Rsum de ce chapitre


Une technique de programmation pure capable de ouer Google durablement ne peut pas exister. De multiples maladresses en programmation peuvent expliquer de nombreuses raisons de recevoir des pnalits de Google. Si le codeur ne pense pas en permanence respecter les guidelines de Google, fatalement, une ou des erreurs surviendront et sans aller jusqu une black liste, les pnalits de Google conduiront du trac perdu. Google dfend la qualit de son index et les maladroits nont qu louer du AdWords. Cest ce quon appelle faire dune pierre deux coups. Nous avons examin quelques techniques doptimisation de page et dtaill ce qui est viter et ce qui est faire. Vous avez dcouvert une des probables pistes futures pour amliorer le rfrencement : la personnalisation la vole des images de vos pages, des images elles-mmes, et pas seulement les balises ALT et TITLE ou leurs noms de chier. Pour nir, nous avons voqu la technologie Flash face au rfrencement. Cette technologie est trs prise par les adeptes du beau design et du beau graphisme. Ils sont nombreux sur le Web. Flash est une source de cauchemars pour tout rfrenceur dbutant. Nanmoins, on peut arriver des rsultats trs performants quand on comprend comment sy prendre, condition de tenir compte du rfrencement avant tout codage, en se rappelant la rgle suivante : ne pas crer un site 100 % Flash mais crer un site de pages HTML contenant chacune une animation Flash ; on arrivera un excellent rsultat en rfrencement.

195

7
7.1 Les rgles du positionnement vont changer .......... 7.2 Intrts des rsultats de recherche personnaliss .... 7.3 Arrive de Personalized Search Results .............. 7.4 Les informations personnelles utilisables .............. 7.5 Pourquoi Personalized search results ? ............... 7.6 Les limites imposes Google ........................ 7.7 Baisse ou hausse du trac ............................. 7.8 Rfrenceur 2.0 ......................................... 7.9 Rsum de ce chapitre ................................. 198 202 204 205 208 210 213 215 230

Google personalized search results


G
oogle et la littrature anglo-saxonne utilisent deux groupes dappellations trs proches pour parler ou crire sur la personnalisation des rsultats de recherche : personalized search results ou customized search results. Le terme results est souvent omis car sous entendu. Nous nommerons cette volution personalized search results dans ce chapitre pour en simplier la lecture. Mais attention, actuellement, au moment de la rdaction de ces lignes, le terme officiel en franais nest pas disponible.

Google personalized search results

7.1 Les rgles du positionnement vont changer


Des consultants SEO amricains prdisent la n du mtier de SEO, de rfrenceur, suite la mise en place puis la prvisible monte en puissance de cette refonte des algorithmes de positionnement dans Google. Google parle de cette volution depuis plusieurs annes. Simple noncer, elle est trs complexe mettre en uvre. Elle est mise en place depuis lt 2008 aux USA. Son arrive en Europe devrait se faire en 2009. Seuls Dieu et Google le savent bien sr, mais la probabilit dune mise en place pour 2009 est forte. En effet, la crise conomique menaant de stendre, lhistorique conomique montrant que ce sont ceux qui innovent fortement qui sortent avant tous les autres de la crise, et quelques autres raisons, font que, except un blocage technique majeur, personalized search results devrait arriver assez vite en Europe et ailleurs. Cette volution majeure se doit dtre commente dans ce livre. Elle va sensiblement changer le mtier de rfrenceur, elle va avoir un impact encore plus fort sur les codeurs de sites web. Ce chapitre prsente des rexions et des estimations qui permettront au lecteur de mieux saisir la porte de cette volution ainsi que ses consquences sur les sites, leurs codages et les actions entreprendre pour y faire face. Cest la premire fois que Google modie de manire majeure le principe de tri et de positionnement des pages. Depuis plusieurs annes, nous voyons Google mettre en place une mise jour majeure de ses algorithmes de ranking, cest--dire le principe selon lequel il trie les rsultats des recherches dans les SERP. Depuis 1998, le positionnement tait bas sur deux approches majeures et successives :
j j

le contenu et son rfrencement dans le site lui-mme ; les backlinks internes ou externes.

Depuis de nombreuses annes, Google enrichissait petit petit ces deux approches par un ltrage nomm personnalized search [results] en anglais. Lobjectif de ce ltrage est dliminer des SERP les propositions de site inutiles pour linternaute. Cela explique pourquoi une requte effectue Bruxelles naffiche pas toujours la mme SERP que la mme requte saisie la mme seconde depuis Paris. Les premires rgles de ltrage ont t simples ; elles concernaient essentiellement la golocalisation.

198

Les rgles du positionnement vont changer

Un exemple : Un internaute est en rgion parisienne et saisit le mot-cl parking depuis son navigateur habituel, Google Chrome, avec lequel il consulte son compte Google, mais il nest pas connect sur ce compte au moment de la requte. Il est cens tre anonyme.

c Fig. 7.1 : SERP sur "parking" depuis Chrome et mon compte.

199

Google personalized search results

Le numro IP a t interprt par Google. Il est manifestement en France, probablement en rgion parisienne. Linternaute sest connect ce matin son compte Google mais sest ensuite dconnect. Les serveurs Google ont manifestement interrog un cookie sur le navigateur Chrome. La soi-disant session anonyme est en fait parfaitement authentie. Google ne sen cache mme pas sur son blog officiel en sous-entendant que, connect ou non, Google tentera didentier tout internaute utilisant ses services (voir un peu plus loin et dans le chapitre annexe webographie les URL consulter sur ce point). Le rsultat est personnalis :
j j

De nombreux parking en rgion parisienne sont proposs. Un Google map locator offre des parkings, le plus prs possible de la ville du domicile de linternaute. Clairement, Google a utilis un cookie et les informations personnelles du compte, en loccurrence son adresse, pour le localiser aussi prcisment. Hors la zone gographique, Google na aucune information pour personnaliser davantage cette SERP. Lhumoriste Gustave Parking gure dans les premiers rsultats ainsi que le site de la socit Noparking qui commercialise un logiciel. Les algorithmes de Google proposent un mix de rsultats couvrant les diffrents thmes dpendant de ce mot-cl : essentiellement des parkings pour vhicules, un humoriste, un diteur de logiciels.

La mme requte depuis Firefox et aucun historique ou cookie sur mon compte Google dans ce navigateur modient la SERP. Le rsultat est plus faiblement personnalis :
j j

Comme auparavant, de nombreux parkings en rgion parisienne sont proposs. Hors ma zone gographique, Google na l aussi aucune information pour personnaliser cette SERP. Lhumoriste Gustave Parking, le site de la socit Noparking (logiciel en gestion du temps) et Wikipedia gurent dans les premiers rsultats. Plus loin, la SERP affiche des parking en France mais hors rgion parisienne : Marseille et quelques autres grandes villes. Il ny a aucun Google map locator proposant des parkings le plus prs possible de la ville correspondant au domicile de linternaute.
Les rsultats de recherche personnaliss en 2009

Ce mode de recherche est mis en uvre par dfaut ; il concerne actuellement uniquement une personnalisation gographique de linformation. partir de 2009, cela changera. Google exploitera davantage dinformations personnelles an de personnaliser les SERP de chaque internaute.

200

Les rgles du positionnement vont changer

c Fig. 7.2 : SERP sur "parking" depuis Firefox, en anonyme

201

Google personalized search results

Les autres applications de la golocalisation concernent essentiellement la localisation dans le pays ou non des sites. Les sites en .fr ou en .com hbergs avec une adresse IP franaise seront privilgis par rapport aux autres sites. Lobjectif pour Google est toujours dviter de noyer linternaute avec des informations inutiles. Une nouvelle version prenant en compte lhistorique de linternaute tait en prparation depuis plusieurs annes. Elle est apparue aux tats-Unis en 2008 et devrait arriver en Europe en 2009.

7.2 Intrts des rsultats de recherche personnaliss


Une expression cl peut tre interprte avec plusieurs dnitions distinctes. Exemple : le mot-cl lampe. Que cherche linternaute ? Une lampe pour dcorer du style de la lampe huile dAladin ? une ampoule ? Une lampe marocaine ? une applique murale ? Sans personnalisation pousse, Google pourra juste donner la priorit daffichage aux sites du mme pays voquant abondamment les lampes. Si cet internaute a dj tudi dautres sites comme des sites de dcorations orientales, pour rester dans lexemple, Google va avoir accs aux mots-cls des dernires requtes. Linternaute a saisi dcoration orientale. Google aura accs aux divers sites web consults par notre internaute. Par dnition, Google connat la thmatique, les mots-cls des pages de ces sites. Avec Personalized Search Results activ, Google pourra complter par lui-mme la requte de linternaute peu bavard, lancer lampe dcoration orientale et lui proposer les pages les mieux positionnes sur cette expression cl. titre de comparaison, entre une dmarche tudiant lhistorique dun internaute et une dmarche analysant la moyenne des historiques des internautes sur la mme requte, on obtient ceci actuellement : En haut de page, Google propose trois choix prts tre cliqus :
j j j

Luminaire. De nombreux autres internautes ont saisi lampe et ont cliqu sur des site de luminaires. Magasin lampe. De nombreux internautes ont saisi la requte magasin lampe ou ont cliqu sur des sites voquant les termes magasin et lampe. Magasin luminaire. Des internautes ont saisi lampe et ont cliqu sur des site de magasin luminaire.

202

Intrts des rsultats de recherche personnaliss

c Fig. 7.3 : SERP Google sur la requte lampe sans personnalisation pousse

203

Google personalized search results

Le systme de thsaurus mis jour par les comportements des internautes met en vidence ces trois expressions cls en rapport avec le mot-cl lampe. La SERP les propose en ides de requtes notre internaute peu bavard dans sa requte. On peroit tout de suite la diffrence de qualit. Dun ct, lampe dcoration orientale avec une forte probabilit davoir touch juste, de lautre des rsultats mixant de nombreux lments (lampe pour bibliothque, annuaire de luminaires, luminothrapie, dcoration), faute de comprendre ce que dsire linternaute. Personalized Search Results promet un avantage comptitif Google face ses concurrents disposant dun public bien plus faible et donc dun thsaurus moins complet, moins able.

7.3 Arrive de Personalized Search Results


Google voque cette piste dvolution depuis plusieurs annes. Pour faire simple, xons cette date 2005. Elle correspond la publication de plusieurs communiqus par Google sur ce thme. Au l des annes, diverses communications et la mise en service dun peu de "comportemental" sur AdSense/AdWords a permis Google dacqurir plus de savoir-faire et de donnes sur le sujet. Nous verrons un peu plus loin que le modle technologique Google repose sur les lments suivants :
j j j

Des algorithmes "adroits" effectuent des calculs simples. Les calculs simples sont raliss sur dimmenses volumes de donnes. Ces calculs utilisent un thsaurus mis jour par les internautes eux-mmes via leurs usages de Google.

Personalized Search a besoin dun thsaurus parfaitement au point, rd et possdant des mises jour ables et continues. En effet, toute logique calculant un positionnement par rapport :
j j

des mots-cls saisis dans Google ; des mots supposs cls par Google dans des pages cliques par un mme internaute ;

aura besoin dun thsaurus oprationnel. Autrement, comment valuer efficacement ce que recherche un internaute en fonction de son historique ? Rappelez-vous lexemple tudi prcdemment, sur lampe.

204

Les informations personnelles utilisables

7.4 Les informations personnelles utilisables


Nous laissons de nombreux historiques dans notre sillage de navigation sur le Web :
j j j j

historique sur lutilisation de Google ; chier log des possesseurs de cookies, notamment ceux des rgies publicitaires ; Google Chrome ; Google toolbar.

Tout ce qui a t cliqu depuis Google, toutes les requtes et les clics affrents sont mmoriss par Google par rapport un cookie ou un numro IP. Un cookie pos par une rgie publicitaire peut tre lu uniquement par cette rgie, auteur de la pose du cookie. Hors une mme rgie peut avoir des milliers, voire des millions de sites comme clients. Cette rgie peut donc vous suivre dans votre navigation. Google a rachet la plus grosse rgie publicitaire du secteur : doubleclic. Cela lui laisse laccs aux chiers de cette rgie. En rapprochant les informations avec comme cl de jointure le numro IP et la date, Google a la possibilit dexploiter une masse de donnes personnelles gigantesques. Nous verrons un peu plus loin quelques intrts stratgiques de Google lis une telle approche.

Google affiche des limites


Selon le blog officiel de Google, http://googleblog.blogspot.com/2008/07/more-transparencyin-customized-search.html, le moteur se limiterait des informations exhaustivement listes et informerait en temps rel linternaute de lusage fait de ces donnes sur les SERP fournies par Google sur toute requte. En thorie, cela semble bien comme thique. En pratique en revanche, les SEO et autres web marketing vont avoir du souci se faire.
Fin du ranking et du positionnement classique ?
La personnalisation des rsultats de recherche signie que de plus en plus souvent, les SERP seront diffrentes dun internaute un autre. Cela signie-t-il la mort du rfrencement tel que nous le connaissons actuellement ? Non, mais le mtier va tre boulevers et tout ce que nous venons de voir restera valide. De nouvelles techniques seront ajoutes pour russir le positionnement dun site. Nous les voquerons un peu plus loin dans le prsent chapitre.

205

Google personalized search results

En effet, la quasi totalit des Internautes ne grent pas les diffrentes options proposes dans leurs navigateurs ou dans les prfrences des outils Google. 95 % et plus des internautes ne vont pas grer leurs historiques et laccs leurs donnes personnelles par Google. Donc celui-ci y accdera sans problme. Google sengage utiliser uniquement les donnes :
j j

Gographiques fournies par votre adresse IP. Issues de vos rcentes recherches, les mots-cls utiliss dans vos requtes. Cette dnition propose par Google est intressante. Que signie "rcent" ? Lgalement, ce serait 18 mois maximum. Ce ltrage est actif que vous soyez ou non connect votre compte Google. Traduction : Google authentie personnellement chaque internaute via cookie. Il vous authentie chaque passage sur un des ses services. Peut-tre garde-t-il en rserve la possibilit didentier un internaute via son adresse IP, mais cette mthode est thoriquement peu able dans 20 % des cas, voire plus. Dans la pratique, avec le nombre de collecteurs de donnes de Google (Toolbar, doubleclic, Chrome), ladresse IP est une mthode dauthentication qui peut tre abilise grce des recoupements. Issues de lhistorique web quand vous tes connect sur votre compte Google, un trs joli texte indique que vous tes propritaire de cette historique et que vous pouvez le supprimer ou lamender votre convenance. Il manque un dtail dans le blog officiel de Google : les donnes personnelles saisies lors de louverture dun compte Google sont aussi utilises.

Dans des interviews de 2007 (http://searchengineland.com/googles-matt-cutts-on-personalization -and-the-future-of-seo-10649), Google indique ne pas vouloir insrer plus de deux rsultats issus de la personnalisation des rsultats de recherche sur 10 affichs dans une SERP classique. Google indique aussi laisser intact les premiers de chaque position sur une expression cl. Des interviews de la mme poque prcisent que Google commencera en douceur pour ne pas heurter ses usagers. Mais ces mme interviews indiquent aussi que plus Google aura conance en cette technologie, plus elle sera utilise. Les limites dusage indiques prcdemment ne tiendront donc clairement pas longtemps. Une limite naturelle existe : ne pas sanctionner les sites qui prsentent un vrai plus pour les internautes. Chaque fois que Google met au point une technique anti-fraude, une question se pose : Cela ne va-t-il pas sanctionner des contenus lgitimes ? En effet, si trop de contenus lgitimes sont exclus par une technique, anti-fraude, anti-paidlink, personnalisation des rsultats de recherche, cela quivaut pour Google se tirer une balle dans le pied et rendre possible le retour dun autre moteur de recherche.

206

Les informations personnelles utilisables

Rsumons-nous sur Personalized search resultats


Tout ce qui est trac par Google de lutilisation de son moteur dun internaute prcis sera utilis pour personnaliser les SERP qui lui sont destines. Quatre groupes dinformation sont utiliss : gographique, personnelle lie un compte Google, historiques web et historique de lusage du moteur (les enchanements de requtes). Ces informations seront utilises que linternaute soit connect ou non un compte Google. La majorit des internautes laisseront faire. Les conditions dutilisation par Google de ces informations sont officiellement transparentes. On a vu quil manquait un groupe dinformation pris en compte dans les calculs de personnalisation sur les rsultats de recherche, les donnes personnelles lies au compte, ds la publication du post sur le blog officiel de Google. Aucune mise jour na t effectue depuis juillet 2008 sur ce sujet. tant donn que trs peu dinternautes consultent et ragissent aux conditions dutilisation de Google, ceux-ci seront enrls doffice dans la personnalisation des rsultats de recherche ; cest le mode par dfaut, il y a peu de chances que quelquun fasse un opt-out pour bloquer ce service. Dailleurs, pourquoi le ferait-il ? La personnalisation est un vrai avantage lors des recherches. Le rfrenceur devra prendre en compte les faits suivants :
j

j j

Personalized search resultats va changer les SERP de nombreux internautes, faisant voler en clats une partie de travail du rfrencement et, au minimum, la manire de mesurer le positionnement. Google ajoutera au l du temps de nouvelles donnes prises en compte. Il officialisera cela ou non. Google peut par exemple prendre en compte les donnes issues des Google toolbar ou de Chrome en lannonant ou non. Limmense majorit des internautes laisseront faire. La personnalisation des rsultats de recherche va bouleverser le travail de rfrencement ; cela aura donc un impact sur le travail du codeur. Nous lvoquerons un peu plus loin. Google amliorera les algorithmes lis Personalized search resultats mis en place et de plus en plus de SERP sloigneront du modle de ranking habituel.

207

Google personalized search results

7.5 Pourquoi Personalized search results ?


Plusieurs raisons stratgiques conduisent Google personnaliser les rsultats des SERP.

Lamlioration des SERP


Mieux les SERP sont adaptes, voire personnalises, aux attentes des internautes, plus ces derniers sont dliss aux outils et au nom de Google. Les avantages sont multiples et vidents :
j j j j

plus de revenus de AdWords ; plus de partenaires AdSense et donc de revenus lis ; plus de revenus publicitaires lis dautres outils Google ; affaiblissement de la concurrence directe : Microsoft et les autres moteurs.

Freiner les rfrenceurs


Tout site web ayant un rfrenceur comptent diminue les revenus de Google. Des pages bien positionnes naturellement nincitent gure un site web souscrire des dpenses AdWords. Les SEO sont jaugs sur leurs performances visibles. Actuellement, ils sont valus sur le ranking des mots-cls des pages du site rfrenc. Avec une personnalisation des rsultats de recherche, ce modle commence voler en clats. Il va tre ncessaire de rednir une mthode de mesure de performance du rfrenceur :
j j

Le navigateur ou loutil de mesure devront avoir limin tous les cookies de toute nature. Google sait que les adresses IP ne sont pas ables. Renouveler son adresse IP pour ne pas tre suivi par Google nest nullement obligatoire pour abiliser une mesure de positionnement et viter un ltre personnel autre que gographique. Il ne faudra pas tre connect sur un compte Google bien sr et si possible utiliser Firefox sans Googlebar si vous tes un professionnel en SEO. Autrement, cette prcaution est inutile. Il faudra songer bloquer la personnalisation de la recherche dans Google/ Prfrences.

Il sera ncessaire de rednir le travail du rfrenceur et de rednir la mesure de la qualit de son travail. Nous lvoquerons plus loin.

208

Pourquoi Personalized search results ?

La crise conomique
Lconomie est durement touche par la crise (subprime, Madoff et autres excentricits de la nance amricaine). Face une possible baisse de revenus, la stratgie commande dinnover pour conserver ses revenus. Deux gisements de bnces sont ainsi viss par Google : laminer encore plus la concurrence et repousser les nues de moustiques rfrenceurs freinant les revenus AdWords.

Un avantage concurrentiel important


Personalized search results exige pour sa russite :
j j

Une puissance de calcul gigantesque : Google dispose de centaines de milliers de serveurs. Une algorithmique bien travaille et optimise : Google a dj d relever de tels challenges et a acquis un indniable savoir-faire face de telles problmatiques. Nous y reviendrons plus loin. De disposer de vastes historiques pour chaque internaute ou presque. Cest le cas. Qui na pas un historique associ un cookie chez Google ? Gmail, Google Map, presque 200 services Google de qualit sont disposition des internautes de la plante, en des dizaines de langues, le tout gratuitement.

De fait, seul Google dispose des ressources diverses ncessaires lancer un service aussi lourd. Cette mise en place amliorera son service, augmentera son avance et renforcera un cercle vertueux : plus il y a dutilisateurs, plus on a de donnes, mieux on peut personnaliser et plus Google gagne en revenus. Google dispose galement de rserves en informations et historiques pour poursuivre son avance sur Personalized search results. Ces rserves ne sont pas officiellement utilises ou pas encore : Google toolbar, Chrome, Doubleclic Google est une socit qui a pour habitude de prendre son temps. Son avance actuelle lui permet de longuement tester et prparer la personnalisation des rsultats de recherche, depuis 3 ans environ. Cela lui donne le confort dune mise en service progressive sans risque.

209

Google personalized search results

7.6 Les limites imposes Google


Malgr sa puissance, Google doit agir prudemment. Voici les obstacles surmonter et ils ne sont pas des moindres.

Le systme doit sauto duquer


Google ne dispose pas des ressources humaines pour entretenir un thsaurus. Celui-ci doit auto apprendre. Google a mis au point un entretien des thsaurus par les internautes eux-mmes, via leurs propres clics. Exemple : cars est rapidement devenu le synonyme dautomobile la sortie du dessin anim ponyme de Pixar/Disney. Ce sont les clics des internautes, dans les requtes, qui ont conduit cette mise jour dans le thsaurus. De mme pour la dtection des mots composs joints dans un seul terme, le thsaurus Google apprend avec les clics des internautes.

c Fig. 7.4 : Dtection par Google lors dune requte sur ~auto : AUTOplus, AUTOreex

210

Les limites imposes Google

Les internautes via une requte incluant "auto" et cliquant sur de nombreux sites ayant auto accol un autre mot dans leurs noms de domaines duquent Google sur lexistence du mot auto, synonyme de automobile. De mme, le thsaurus utilis par la personnalisation des rsultats de recherche devrait automatiquement sentretenir. Les comportements des internautes et leurs ventuelles corrections vont apprendre au systme o sont les erreurs et il pourra ainsi automatiquement les corriger.

Illustration
Un internaute saisit une requte, lampe, aprs avoir navigu sur des sites web de dcoration de maison. La personnalisation lui propose une SERP avec majoritairement des pages/URL sur le thme "lampe dcoration". Il ne clique sur rien et saisit une autre requte : lampe ptrole. Dans la SERP renvoye, il clique sur une page ayant pour thme "lampe ptrole pour la dcoration dune maison". Si plusieurs internautes font cela, le thsaurus de Google prendra en compte que lampe dcoration [maison || intrieure] doit inclure aussi des URL lampe ptrole. Il pourrait en faire gurer une ou deux dans la SERP type renvoyer vers toute requte. Le thsaurus a t automatiquement mis jour.
Qui fait quoi ? Lorganisation probable de Google
Google dveloppe et dploie les algorithmes gnriques de personnalisation des rsultats de recherche. Ces algorithmes utilisent les donnes organises par un thsaurus. Lusage des utilisateurs des diffrents services Google duque le thsaurus sans intervention humaine. Le thsaurus utilis par les multiples services Google est issu du comportement rel de la majorit des internautes. Nous tenons une des cls qui permettront de raliser le rfrencement sur le Google de demain. Les historiques dun internaute contiennent :
j j

Les mots-cls de ses requtes : ils dgagent des tendances. Son historique web, cest--dire les URL sur lesquelles il a cliqu depuis les SERP de Google.

Hors chaque URL correspond une page, un objet ayant des proprits : TITLE, titres H1, backlinks, etc. Ces proprits ont des contenus en mots-cls et en syntaxe. Elles dgagent des thmatiques : recette de cuisine, dcoration dintrieur..., chacune associe une orientation plus prcise : recette de cuisine sur les gteaux au chocolat moelleux, luminaire pour la dcoration dintrieur, etc. Le classement en thmatiques, en orientations plus prcises, est gr par le thsaurus. Celui-ci cre automatiquement de nouvelles catgories,sous-catgories en fonction du comportement des usagers de Google comme nous lavons dj vu.
SUITE

211

Google personalized search results

La personnalisation des rsultats de recherche va analyser la requte de linternaute vis--vis de ses historiques qui dgagent thmatiques et orientations selon le classement du thsaurus de Google. Les SERP contiendront des URL positionnes dans lindex sur le rsultat du ltrage slectionn par la personnalisation : golocalisation, thmatiques, orientations, mots-cls calculs pour correspondre aux attentes de linternaute.

Ne pas froisser les utilisateurs


Des centaines de millions dusagers quotidiens ont lhabitude dutiliser Google et davoir des SERP rapides et peu prs adaptes leurs besoins. Il est impossible de froisser ceux qui ont fait Google. La mise en service de nouveaux algorithmes passe toujours par une phase de prise en compte progressive pour ne pas perturber les usagers. Le changement de positionnement dans les SERP ne sera pas trop rvolutionnaire au dbut. Google a prvu que lutilisateur puisse dbrayer les ltres aisment an de permettre aux usagers de revenir tout moment sur lancien fonctionnement. Bref, tout est fait pour assurer la jonction entre les deux fonctionnements du moteur : avec ou sans personnalisation des rsultats de recherche.

Ne pas planter le service


Les algorithmes ne doivent pas ralentir ou planter le systme. Comme les algorithmes de dtection de duplicate contents, il seront "simples". Lobjectif semble contradictoire. Dun ct il faut avoir un systme de personnalisation performant, de lautre cela doit tre tellement rapide que linternaute ne peroit pas de temps dattente sensible. Ce nest pas si contradictoire. Le fonctionnement actuel voit un SEO jouer avec diffrentes limites face Google sur des pages accessibles aux deux parties en prsence. Pour tenter de ne pas se faire ouer par le rfrenceur, Google doit dpenser des ressources informatiques an de traquer triches et paidlinks. Avec la personnalisation, Google a accs un important rservoir dinformations inaccessibles jamais au rfrenceur : lhistorique web et lhistorique requte de linternaute. Il ny a pas de risque de triche. Il sera relativement ais dappliquer des algorithme simples et pas trop gourmands en ressources permettant de cibler, avec un bon taux de succs, ce que cherche linternaute.

212

Baisse ou hausse du trac

7.7 Baisse ou hausse du trac


Pas de panique : le trac diminuera des internautes mal cibls. La personnalisation en cartera une partie. Il pourrait y avoir dun autre ct une augmentation de trac avec un meilleur positionnement du site sur des expressions cls pas assez usites. Exemple : Reprenons notre exemple de recherche sur lampe. Rappelez-vous, la personnalisation a permis Google de dduire que cet internaute cherchait en fait une lampe dcoration orientale. Un site commercialisant de la dcoration marocaine, avec un faible budget netlinking, ayant une landing page ddies aux lampes dcoratives, ayant travaill les diffrentes dclinaisons des expressions cls autour des lampes commercialises sera bien plac sur une telle requte : lampe dcoration orientale. Ce mme site est trs loin sur le mot-cl lampe employ seul. La possibilit de rcuprer en trac de nouveaux internautes mieux cibls est importante, dans cet exemple.
Avantage des recherches personnalises
Un site ayant du contenu rel, bien organis, dot de landing pages, dune gestion dynamique et centralise de sa stratgie de rfrencement, a tout gagner de cette volution majeure de Google. En effet, le travail dj dcrit dans cet ouvrage et dans le Guide Complet du rfrencement sur Google (Micro Application) aura une effet dmultipli sur le trac quand Google mettra en service les rsultats de recherches personnaliss.

Cette modication majeure dans les algorithmes de SERP peut avoir des effets trs bnques en trac sur un site web :
j j j j j j

dont le contenu et la valeur ajoute sont rels ; qui prsente pas ou peu de duplicate contents ; qui a une organisation apparente trs hirarchise pour Google ; qui possde une stratgie de rfrencement centralise et cible (landing pages, expression cl) ; qui met en uvre une politique de rfrencement concentre sur les mots/expressions cls et leurs multiples dclinaisons ; qui possde une stratgie de netlinking.

En effet, avoir lexpression cl, celle calcule par la personnalisation du rsultat de recherche Google, dans la landing page cest bien, mais faut-il encore tre bien positionn dessus. Hors le nombre de dclinaisons rfrenables dans une page web na pas chang :

213

Google personalized search results

approximativement 5 mots-cls centraux, une dizaine maximum autour. Ensuite, il ny a plus de place en URL rewriting et en title de page. Il faudra donc identier, trier, classer et cibler hirarchiquement les multiples dclinaisons et variantes dune expression cl sur sa landing page :
lampe lampe j lampe j lampe j lampe
j j

dcoration dcoration de salon ; en cuir de mtallique

orientale ; marocaine ; chvre ; et en cuir, etc.

Une landing page russie sur cette expression cl, lampe dcoration orientale, devra donc dtailler les endroits o on peut la mettre (salon, etc.), sa composition (cuir de chvre et mtal), son origine (marocaine, orientale), sa fonction (dcoration, dcorative, clairage). Cela nous montre une landing page dote de textes, de titres, de visuels si on dsire augmenter le trac. Ce qui tait vrai, avant la mise en service de la personnalisation des rsultats de recherches sur Google, est encore plus dactualit aprs.

Les constantes
Un site sera toujours compos de contenu, de backlinks internes et externes. Cela sera toujours pris en compte. En effet, Google doit :
j j

fournir des SERP aux internautes sans historique ; disposer dune base dindexation sur laquelle personnalisation des rsultats de recherche.

appliquer

des

ltres

de

Un site mal conu aura des statistiques potentiellement incomprhensibles et difficiles interprter. La personnalisation pourra avoir un effet dvastateur sur le trac dun tel site. La qualit en structure (navigation claire et fortement hirarchise pour les bots de Google), la qualit en rfrencement (pas de duplicate content, critres bien grs, accessibilits technique et smantique), la qualit et le volume des informations (texte, vido, images, animations ash , bref le rich media), la qualit de la mise en page (des titres, des sous-titres, un chapeau, des paragraphes clairement dlimits, des phrases correctement construites et formes, etc.) sont actuellement des critres exigs pour russir son positionnement via une campagne de netlinking.

214

Rfrenceur 2.0

Ce sera accentu par lvolution de Google vers des SERP personnalises selon lhistorique de linternaute :
j

Google pnalise indirectement les contenus mal prsents. Une thmatique mal perue noie la page dans le n fond de lindex. (Mais on peut avoir du Page rank malgr tout si on a des backlinks externes.) Il est toujours plus facile dinterprter le web analytics dun site clairement organis. Un rfrenceur pourra mieux travailler.

7.8 Rfrenceur 2.0


Le mtier va fortement voluer. Cest vident. Dans un premier temps les rfrenceurs, codeurs ou non, vont devoir largir la palette de leurs comptences. Dtaillons quelles comptences et pourquoi. Outre le travail habituel daudit de mots-cls, le travail sur les critres des pages ou le gabarit, de programmation "de base" ou de conseil en architecture de site, de nouveaux savoir-faire vont devoir tre ajouts ou complts.

Mieux comprendre la logique de personnalisation


Il va falloir trouver la logique de base des algorithmes de personnalisation. Les SEO ont plus ou moins bien reconstitu le fonctionnement actuel de Google an de savoir comment rfrencer efficacement un site et ses pages sur ses expressions cls. Toutes les donnes ncessaires pour mieux cerner la logique de Google taient accessibles : les pages optimiser, les pages mieux places des concurrents, diffrents outils Google, etc. L, le rfrenceur naura pas accs aux historiques des internautes. Il va donc falloir sy prendre autrement. On aura dun ct le moteur manipulant des donnes simples. Ces manipulations sont en fait lexcution dune logique, de calculs donc, destins raliser la personnalisation des rsultats de recherche, donc de positionner des pages en liste ordonne dans des SERP. De lautre ct, ces donnes simples sont issues de deux sources :
j

Un thsaurus construit par lusage des internautes eux-mmes du moteur de recherche. Ce thsaurus fournit les mthodes de classement, bref tout ce quil faut pour comprendre et classer le contenu des pages des sites dun ct et les pages des sites web visits depuis des SERP de lautre. Les historiques propres chaque internaute ayant un compte Google et ayant t authenti par Google via un cookie.

215

Google personalized search results

Pour simplier, nous partirons du principe que tout internaute a un compte Google (GMail, etc.) et quil aura donc un historique. terme, vu le poids grandissant de Google, vu son statut juridique et ses mthodes, une majorit dinternautes auront sous une forme ou une autre un compte Google ou quivalent, avec lesdits historiques associs. Lorganisation des donnes du thsaurus est partiellement consultable via les commandes adquates dans Google. Par exemple : ~ (tilde) qui permet de lister les synonymes dun mot selon ce thsaurus auto duqu de Google.

c Fig. 7.5 : SERP de la requte tilde ~lampe sur Google.

216

Rfrenceur 2.0

Selon le thsaurus de Google, lampe a pour synonyme lacronyme LAMP (Linux Apache MySQL PHP). Dans notre cas, cela noffre aucun intrt. On notera lusage massif du mot lampe pour parler dampoule dans de nombreux sites web. Le thsaurus de Google na pour le moment pas pris en compte ce synonyme potentiel lampe ampoule.

c Fig. 7.6 : SERP de la requte tilde ~lampe dcoration sur Google.

Plus intressant, ~lampe dcoration saisi en requte dans Google nous apprend que deco est un synonyme de dcoration. On peut ainsi diminuer la longueur des URL et le title de la page. En rdactionnel, on pourra mixer les deux termes. Via ces exemples, nous venons de voir quelques rsultats de quelques rgles rgissant le thsaurus de Google.

217

Google personalized search results

Dautres outils Google permettent de dtecter dautres formes dassociations et rgles que ce thsaurus ralise : loutil de recherche de mots de AdWords, par exemple : https:// adwords.google.com/select/KeywordTool.

c Fig. 7.7 : Rsultats de Google KeywordTool sur "lampe".

218

Rfrenceur 2.0

KeywordTool nous donne de prcieuses indications mme si elles ne sont pas assez prcises :
j j j

Nous avons le trac des recherches sur le mot-cl lampe, sur ses dclinaisons. Nous obtenons aussi des mots-cls valuer selon Google cause des associations lies lampe et ralises par les internautes lors de leurs recherches. Il nous manque des chiffres plus prcis. Mais ceux-ci sont en fait plus ou moins disponibles dans la gestion de compte AdWords. En plaant des enchres durant une priode de quelques semaines, on peut obtenir de trs nombreuses informations complmentaires.

c Fig. 7.8 : Rsultats de Google KeywordTool sur "lampe dcoration".

219

Google personalized search results

Certaines associations suggres sont intressantes, associer lampe dcoration intrieur, maison, deco. En faisant un travail itratif sur les multiples combinaisons et extensions proposes par loutil, on peut mieux cerner la logique du thsaurus. En testant ces combinaisons via Google en ayant un compte Google ouvert, en simulant un historique, en effaant cet historique (ce que permet Google ce jour, tout au moins officiellement) et en recommenant, on pourra en tirer des informations essentielles sur la logique associative lui permettant de recrer une nouvelle requte incluant de nouveaux mots-cls pour le compte de lutilisateur an de personnaliser le rsultat de sa recherche. De ce que lon peroit aujourdhui, Google transformera probablement une expression cl, celle saisie lorigine par lusager, en une autre requte pour le compte de cet usager via la personnalisation. On ne connatra pas lexpression nale gnre et utilise, cest vident. Mais le rfrenceur aura accs aux mots-cls saisis lorigine dans la requte sur Google car ils sont vhiculs dans lenvironnement de linternaute arrivant sur la premire page du site. Le rfrenceur pourra deviner ou calculer ou estimer, avec laide dun logiciel de suivi performant et dun site bien conu, la requte calcule par lalgorithme de personnalisation. Peut-on en conclure tout de suite que le rfrenceur naura donc pas accs des expressions cls/historiques mal prises en compte par le site rfrencer ? Non. En effet, mme mal positionn sur un mot-cl, un site a tout de mme un peu de trac sur une expression ou mot-cl mal rfrencs. Il appartient au rfrenceur de les dtecter, de comparer le trac potentiel existant (on vient de voir quil y a des outils Google pour cela) au trac mesur en audience, den dduire les expressions cls pas assez travailles dans des landing pages et de corriger ces oublis ou ces erreurs. Il est probable que Google remploiera le thsaurus utilis par dautres services et applications de Google. En effet, pourquoi en prendre un autre ? Seul Google a accs aux donnes de lhistorique de tout internaute ayant un compte Google, donc reconstituer lalgorithme sera impossible ou trs difficile. Mais un rfrenceur expriment, avec un solide sens de la programmation, pourra auditer un site, des expressions cls et en dduire les dclinaisons capables de gnrer du trac de qualit, personnalisation des rsultats de recherche ou non. Certes, il ne pourra probablement pas calculer toutes les dclinaisons, mais il pourra en identier suffisamment pour doper le trac dun site web.

Principes probables de la personnalisation


Faute de pouvoir tester en rel en franais, nous ne pouvons qutendre notre savoir-faire actuel et le projeter vers cette nouvelle approche de Google.

220

Rfrenceur 2.0

Nous avons vu quen utilisant la thorie des graphes puis les notions dobjets et de proprits, on a dni un premier objet, URL, dote de proprits : titre de page, meta description, titre(s) H1, etc. Ces diffrentes proprits contiennent des mots. Des algorithmes permettent den dduire les mots-cls. Un autre objet a vite t dni, backlink, avec 3 proprits pour faire simple : lURL o son ancre est pose (lURL dpart du backlink), le texte du libell du lien, lURL vise. Avec un peu de mathmatiques simples, inclusion, intersection, pondration, on a vu que trs vite on pouvait construire un algorithme capable de calculer le positionnement dune page prcise sur une expression cl prcise face dautres pages candidates tre positionnes sur cette mme expression cl. Trs certainement, Google utilise des algorithmes bien plus sophistiqus pour comprendre le contenu de chaque page. Ces algorithmes existent depuis des annes. Le challenge consiste les faire sexcuter correctement sur des masses gigantesques de donnes et mettre disposition de centaines de millions dinternautes des temps de rponse rapides lors de leurs recherches ou utilisation des multiples services et fonctionnalits de Google. tendons cette logique la personnalisation des rsultats de recherche. Lobjectif nest pas de tenter de faire un reverse engineering de Google, mais juste de poser quelques principes. Cela nous permettra de mieux apprhender les actions et mthodes pour russir un rfrencement. Un historique est compos de trois objets au minimum :
j j j

requte : les mots-cls saisis dans une requte ; URL visite : une URL clique dans une SERP Google elle-mme renvoye vers un compte Google ayant envoy une requte ; compte Google : un usager utilisant au moins un service Google comme Gmail, Google Analytics, etc.

Nous percevons immdiatement les proprits videntes accrocher ces objets. Voici une premire approche logique dans la ligne de ce que nous avons dj peu prs tabli du fonctionnement des algorithmes de Google. Requte :
j j j j

identiant requte ; compte Google auteur de la requte ; date et heure, minute, seconde ; mots-cls.

221

Google personalized search results

URL visites :
j j j

identiant requte lorigine de la SERP do lURL a t clique ; date et heure, minute, seconde o le clic a t fait ; ID URL (pour accder aux proprits de la page visite ; mme objet que celui vu prcdemment).

Compte Google, champs supplmentaires ajouter la structure dj existante :


j

Thmes prfrs sur les N derniers mois. Illustration : si un internaute saisit de nombreux mots-cls lis la dcoration dune maison, toutes recherches sur des mots-cls comme tissu ou lampe verront leurs rsultats personnaliss sur lampe dcoration et tissu mobilier ou tissu dcoration maison plutt que lampe ampoule et tissu pour vtement. Logiquement, les composantes du prol de linternaute seront organises pour tre compatibles avec le fonctionnement du thsaurus. Mots-cls frquemment utiliss, en requtes ou prsents dans les URL visites, sur les N derniers mois. Une pondration est possible pour permettre un classement par ordre dimportance des mots-cls utiliss sur cette priode.

Une telle structure offre de nombreux avantages. Elle permet dtre "compatible" avec la structure prcdente. Elle est apparemment simple mettre en uvre. Elle permettrait de multiples rglages la vole diminuant ou augmentant la consommation de ressources. Elle est compatible avec les rares dclarations de Google sur le sujet. Elle prsente au moins un inconvnient : elle est potentiellement trs consommatrice de ressources. Si pour chaque personnalisation de rsultats de recherche, le serveur ausculte 18 mois dhistorique, il risque dy avoir une trop forte consommation de ressources informatiques. Ce scnario est incompatible avec le maintien de temps de rponses rapides qui est une des caractristiques de Google comme moteur de recherche. De multiples approches algorithmiques sont possibles pour allger le cot en consommation de ressources informatiques :
j

Prconstruire le prol, les mots-cls et les thmes prfrs dun compte Google. Cela viterait de parcourir et traiter des centaines ou mme des milliers denregistrements pour valuer en temps rel la personnalisation dun rsultat de recherche. Cela permet galement une meilleure efficacit. Le traitement tant en batch, une fois de temps en temps, Google pourrait utiliser des algorithmes plus complexes, bass sur de lIA (Intelligence Articielle), pour mieux comprendre les contenus visits par linternaute et donc mieux classer et catgoriser son prol en respectant le systme du thsaurus.

222

Rfrenceur 2.0

Consulter en temps rel la dernire heure (dernire 30 minutes ou les 100 dernires utilisations, etc.) dhistorique en requtes et en URL visites lies ces requtes.

Le peu dinformations donnes par Google sur leur architecture, si ces informations sont vraies, indiquent que les techniques de comprhension des textes sont plutt bases sur de lIA et quils en sont particulirement contents depuis dbut 2008, o, nous citons en traduisant, "un saut qualitatif trs net leur permet de plutt bien apprhender dsormais ce que raconte une page [de site web]" (interview en anglais dun des directeurs techniques de Google). Des tests sur 2008 ont montr effectivement un saut qualitatif trs net. Par exemple, en 2007 les SERP taient truffes dURL dont les pages avait du soi-disant contenu mais dont la valeur ajoute relle tait nulle. Exemple : les annuaires de liens et autres site contenus bidons taient bien mieux rfrencs sur des mots-cls lis au tourisme. Ils encombraient les SERP sur des recherches pour louer un appartement ou une maison. Dsormais, ils ont pratiquement disparu des SERP. Le contenu, quoique existant et truff des bons mots-cls, nest plus pris en compte par Google. Diffrentes campagnes de tests et de comparaisons permettront daffiner ou damender ce modle.

Chercher des associations


Les associations les plus courantes ralises par les internautes seront consultables via AdWords et ses outils. En effet, pour augmenter ses revenus et satisfaire les clients payants, Google doit proposer des AdWords correspondant le mieux possible aux attentes de linternaute. Loutil keywordTool devrait offrir aux clients AdWords la possibilit de louer des mots-cls en lien avec la recherche suppose, personnalisation ou non. Loutil suggrera les mots-cls dont Google sait quils sont mathmatiquement intressants. Exemple : Lampe donne accs aux suggestions lampe berger, lampe bureau, lampe maison, lampe chevet, lampe luminaire, etc. lampe Maroc donne accs aux suggestions lampe marocaine, artisanat marocain. lampe artisanat marocain informe que cest une impasse : aucune requte. Mais quelque part dans la chane, on aperoit lampe salon avec un potentiel "large" de 12 000 requtes mensuelles. En "exact", il reste plus de 5000 requte/mois en moyenne. Personnalisation ou non, ces informations restent valides. Si la personnalisation modie les volumes ou les associations de mots-cls, pour garder ses clients et augmenter ses revenus, Google via keywordTool devra en tenir compte et mettre disposition les donnes rsultantes.

223

Google personalized search results

Rfrenceur et mot-cl selon Google


Matt Cutts, personne importante chez Google, indiquait en 2007 que le mtier de rfrenceur se focaliserait dans le futur (avec la personnalisation des rsultats de recherche oprationnelle) sur les mots-cls sous-entendus dans leurs slections et dans leurs accessibilits smantiques sur le site.

Hypothse #1 : historique dcousu


Notre internaute, chercheur de lampe pour une dcoration orientale, a navigu via des clic dans les SERP de Google sur de multiples sites sans rapport avec une lampe : bourse, informations quotidiennes, recherches pour changer sa voiture, etc. Puis il recherche une lampe (orientale). Nous voulons tre positionn naturellement sur cet internaute lors de sa recherche. Sil saisit juste lampe, nous navons aucune chance dtre vu. Son historique ne permet pas Google de comprendre ce quil cherche. Linternaute, devant linadquation des rsultats, devrait complter sa requte. Nous restons dans le cas classique dun ranking traditionnel.

Hypothse #2 : historique faisant sens


Notre internaute cherche une ide de dcoration. Il recherche et navigue sur des sites de dcoration. Puis il saisit lampe dans une requte sur Google. Les informations de Google publies en anglais sont claires : le but de la personnalisation des rsultats de recherche est dviter dafficher des thmes sans rapport avec la recherche prsume de linternaute. A priori, cet internaute exemple ne cherche pas une ampoule. Il recherche soit un luminaire (lampe luminaire), soit une pure dcoration (lampe dcoration). Selon les pages cliques depuis Google, son historique, le moteur affichera plutt soit uniquement des pages lies "lampe luminaire", soit uniquement des pages lies "lampe dcoration" ou un mlange des deux thmes.

224

Rfrenceur 2.0

Web analytics et rfrencement naturel

c Fig. 7.9 : Google Analytics : les mots-cls utiliss pour arriver sur une landing page

Google Analytics indique les mots-cls utiliss par les internautes arrivant sur une premire page dun site : Contenu/Principales pages de destination/Mots cls utiliss (page dentre). Dans la gure, cette landing page, un exemple rel, nous lappellerons "kit", cible lexpression cl kit associ quelques autres mots-cls. 71 dclinaisons diffrentes utilisant une dizaine de mots-cls ont amen 653 affichages de cette landing page (106

225

Google personalized search results

avec cette page comme page darrive dans le site) lors de 379 visites uniques environ (lors dune visite, le visiteur peut consulter deux fois la mme page). Les expressions cls affiches sont celles vhicules par lenvironnement de linternaute lors de son arrive sur cette page ou sur une autre page du site. Contenu/Principales pages de destination/Rcapitulatif de navigation permet didentier clairement, dans Google Analytics, lusage en landing page (page darrive) ou en page sur le chemin dune visite. On voit que le taux de rebond est faible, moins de 15 % en moyenne pour lexpression cl cible par notre landing page, on a 33,85 % sinon pour la moyenne de toutes les visites. Le taux de sortie immdiate est galement trs faible, de lordre de 12 % pour lexpression cl cible par notre landing page. On a 19,91 % autrement pour la moyenne de toutes les visites. Il serait intressant de savoir ce quont fait ces internautes ensuite. Mais Google Analytics ne sait pas dlivrer un dtail prcis dun internaute. On peut obtenir une squence dbut : page prcdente notre landing page page suivante. Mais cest insuffisant. Et Google Analytics nest pas l pour aider un rfrenceur, mais un webmestre utilisant AdWords. La personnalisation va accentuer les diffrences de besoins en outils des AdWorders dun ct et des rfrenceurs naturels de lautre. Les outils actuels de Google devraient encore moins correspondre aux futurs besoins des rfrenceurs naturels. Demain, avec la personnalisation, le rfrenceur aura besoin de visualiser le chemin complet dun internaute prcis pour tenter de reconstituer une expression cl gnre par Google. Il lui faudra au minimum isoler les mots-cls utiliss pour arriver sur telle landing page par des internautes et isoler chaque chemin ralis ensuite par chacun de ces internautes. Le rfrenceur avait dj besoin de faire un peu de web analytics pour suivre lvolution dun rfrencement. Cela va devenir indispensable.
Web analytics
Pour sadapter la personnalisation des rsultats de recherche de Google, le rfrenceur 2.0 va devoir matriser les outils daudience. Le rfrenceur codeur aura peut-tre besoin de coder certains utilitaires lui-mme, notamment pour se faciliter la tche de reconstituer lexpression cl construite par la personnalisation. Une certaine forme de web analytics va devenir primordiale dans le mtier de rfrenceur. Lusage web analytics du rfrenceur sera orient sur la slection, le classement, la priorisation des mots et expressions cls. Les autres spcialits du web analytics essaient dextraire dautres logiques, comportementales par exemple, pour transformer un internaute prospect en client acheteur.

226

Rfrenceur 2.0

Programmation et rfrencement naturel


Google Analytics nest pas assez performant, peut-tre est-il brid, pour les besoins dun rfrenceur. Cest certes une bonne base, un bon outil dapprentissage, mais ses fonctionnalits sont insuffisantes pour appuyer un rfrencement naturel. Il sera vite indispensable de disposer doutils gnrant automatiquement les mots-cls darrive par landing page associs aux chemins de ces internautes. En effet, travailler manuellement pour une expression cl, pourquoi pas. Mais quand un site complet est prendre en charge, cela devient vite ingrable.
Coder
Pour travailler sur les bonnes expressions cls an de prendre en compte au mieux la personnalisation des rsultats de recherche, un rfrenceur devra avoir de solides comptences en programmation. Soit il en aura besoin pour coder des scripts PHP utilitaires divers et varis an dautomatiser les tches fastidieuses mais indispensables ncessaires son travail. Plus des mthodes ables sont automatises, plus efficient sera le travail du rfrenceur. Soit il en aura besoin pour valuer un outil propos par une socit spcialise.

Google writing et rfrencement naturel


Au travers des exemples vus, nous pouvons aussi percevoir quune autre dimension simposera au niveau du rfrenceur : la mise en page fonctionnelle et le rdactionnel sous la forme de Google writing. Slectionner les expressions cls, les factoriser est stratgique. Mais il faut ensuite les implanter en respectant la priorisation des termes. Ce travail pourra tre partiellement automatis avec un programme adquat. Exemple :
Lampe [ [dco] || [orientale | marocaine] ] [maison | intrieur] [cuir | cuir de chvre | cuir et mtal | cuir de chvre et mtal]
j j

| signie : ou exclusif, soit un terme soit lautre, jamais les deux en mme temps. || signie : ou inclusif, soit un terme soit lautre, soit les deux en mme temps.

227

Google personalized search results

Cette ligne exprime en factorisation :


j j j

j j j

Le mot-cl central stratgique est : lampe. Il doit apparatre dans un maximum de critres de page : TITLE, Meta Description, ALT, H1, etc. Lampe doit tre associ dco, synonyme de dcoration selon le thsaurus de Google. Lampe de dcoration doit tre prsente dans tous les critres de page. Lampe doit tre associ orientale ou marocaine, synonyme de Maroc selon le thsaurus de Google. Ces expressions cls doivent tre prsentes dans tous les critres de page. Puis on peut combiner lampe dcoration avec soit orientale, soit marocaine. Puis on peut combiner ces expressions cls avec soit maison, soit intrieur. Et enn, on peut combiner avec les mots dcrivant la composition de la lampe, du cuir de chvre et du mtal.

En une ligne exprimant une factorisation, on rsume les objectifs en expressions cls dune landing page : ordonnancement des mots et priorisation. Nous avons vu dans les chapitres prcdents comment implmenter, dans une table MySQL, de telles proprits et comment les manipuler en script PHP. Cela automatise partiellement ou totalement laccessibilit smantique de chaque page au sein dune stratgie globale de rfrencement.
Google writing
Pour russir le positionnement via laccessibilit smantique, faire prendre en compte les bons mots-cls par Google pour chaque landing page, les comptences en Google writing devront tre utilises bien plus quauparavant. Il va falloir dcliner correctement chaque factorisation dexpressions cls.

bauche dalgorithme : rfrencement et personnalisation


Les enjeux sont :
j j

reconstituer, mme approximativement, une expression cl gnre par Google lors de la personnalisation de rsultats de recherche ; puis corrler avec le taux de transformation an didentier les expressions cls capables dapporter des internautes transforms, cest--dire devenant clients.

Nous avons vu, au paragraphe prcdent, quon avait besoin :


j

Dun outil collectant les mots-cls des internautes arrivant pour la premire fois sur une landing page dun site. En clair, on a besoin de connatre les performances de

228

Rfrenceur 2.0

collecte en premiers arrivants de chaque landing page. Sert-elle quelque chose ? Est-elle bien positionne sur ses expressions cls, avec ou sans personnalisation des rsultats de recherche ? A-t-elle assez de trac par rapport aux informations issues des outils de Google ? De disposer pour chaque internaute arrivant via une landing page donne, de tout son parcours sur le site. On obtient ainsi les performances de transformation de chaque landing page. Il suffit de dtecter le passage de linternaute sur les pages adquates : remerciements pour un formulaire rempli, visibilit de plus de 10 secondes de telle promesse marketing, etc. Davoir valu pour une expression cl, via des simulations dhistoriques, le comportement de Google.

On aurait pour une landing page :


j j

Un nombre limit de mots-cls (lampe, dcoration, orientale, etc.) pouvant composer des centaines de combinaisons dexpressions cls. Ces mots-cls sont infrieurs 15 voire moins et sont parfaitement identis. Ils sont prsents dans une table MySQL. Normalement, si on suit ce qui a t expliqu auparavant, on a pu identier certaines des expressions cls utilises par Google en personnalisation et elles sont intgres dans la factorisation de mots-cls de la landing page. Moyennant un bon usage de Google Analytics ou mieux, un petit programme, on peut identier les mots-cls utiliss par un internaute arrivant sur une premire page puis suivre son parcours sur tout le site, y compris sil revient (via un cookie). On a pu exporter dans une table MySQL (chaque mois, chaque trimestre via un chier .csv par exemple) depuis un outil Google comme keywordTool le trac en requtes estim ou mesur rel sur telle ou telle expression cl, en large (cest--dire toute expression cl contenant les termes indiqus dans nimporte quel ordre) ou en strict, cest--dire cette expression cl trs prcise. Un quelconque outil de positionnement nous donne les positions de la landing page sur ces expressions cls directement dans une table MySQL

Nous avons les donnes, il ny a plus qu automatiser corrlations et suivi dans le temps. Pour chaque landing page, on afficherait :
j

Les expressions cls des premiers arrivants sur les N derniers jours (N = 30 par exemple). Un programme de collecte de ces donnes via $_SERVER en PHP est idal pour cela.

229

Google personalized search results

j j j

Le taux de transformation (une transformation signie latteinte dune URL comme "merci davoir pass commande" par un internaute) de ces premiers arrivants sur la landing page. Grer $_SERVER et un cookie permet de tracer le parcours de linternaute dans un chier .txt puis dimporter ce chier, la nuit par batch, dans une table MySQL an de pouvoir identier si tel internaute est pass par cette URL de remerciement ou non. Les mots-cls principaux de la page ou mme la factorisation retenue (on peut ajouter un champ la table article pour prvoir cette possibilit). Le trac existant sur ces expressions cls dans Google, en large et en respect strict de lexpression cl. Le positionnement de la landing page dans Google, expression cl par expression cl.

Ces informations permettraient de cadrer dun coup dil les performances de chaque landing page sur les 30 derniers jours. On peut amliorer lapproche en introduisant la notion de suivi sur N mois, de comparaison avec les statistiques globales du site, de comparaison entre landing pages, de benchmarker les positions des sites concurrents sur les expressions cls de chaque landing page, etc. Mais nous avons l le cur dun systme de suivi des performances.

7.9 Rsum de ce chapitre


Larrive de Google Personalized search results (la personnalisation des rsultats de recherche) va profondment bouleverser le rfrencement et le positionnement des sites web dans les annes venir. La personnalisation utilisera lhistorique des requtes ralises sur Google et aussi lhistorique web des URL cliques depuis les SERP de Google. De nombreuses sources dinformations, Doubleclic, Google ToolBar, Chrome, pourraient thoriquement permettre Google de tracer lactivit de tout internaute ayant utilis Google et possdant un compte Google. Le moteur dispose de ressources pour faire progresser et monter en puissance son approche. Ses concurrents, Microsoft et Yahoo, nont pas une telle allonge. La personnalisation des rsultats de recherche permettra Google de laminer la concurrence, damliorer les recettes de AdWords en freinant lactivit des rfrenceurs et de dliser encore plus dinternautes des outils. Dans ce chapitre nous avons ralis une premire esquisse sur le rfrencement prenant en compte la problmatique de la personnalisation des rsultats de recherche.

230

Rsum de ce chapitre

Le mtier du rfrenceur va se concentrer sur les mots-cls et leurs prises en compte par le moteur (les bons mots-cls sur les bonnes pages avec la bonne mise en exergue). En apprhendant mieux les principes de programmation dune personnalisation des rsultats de recherche, on peroit mieux comment procder pour disposer dun rfrencement efficace.
Mesurer lefficacit du rfrencement
Une bauche dun algorithme permettant de suivre la qualit de son rfrencement vous permettra de dmarrer une nouvelle approche pour mesurer lefficacit de votre rfrencement et de votre rfrenceur.

231

8
8.1 Outils pratiques ......................................... 8.2 Conseils, astuces et dpannages ..................... 8.3 Rsultats de recherche personnaliss ................. 8.4 Normes et manuels ..................................... 8.5 URL de codes sources .................................. 234 236 237 237 238

Annexe Webographie
V
j j

ous trouverez dans ce chapitre diffrentes URL pointant des astuces, des conseils, des outils prsentant un intrt direct ou indirect avec les sujets abords dans ce livre : rfrencement ; forum sur le web marketing dont le rfrencement naturel nest quune des composantes ; programmation web ; outils divers facilitant la mise au point de programmes.

j j

vous de jouer !

Annexe Webographie

8.1 Outils pratiques


j

http://www.webrankinfo.com/outils/header.php est un outil en ligne permettant danalyser un

header http. Il savre trs pratique quand on met au point un .htaccess en charge de faire des redirections. http://ip-to-country.webhosting.info/node/view/36 renvoie le pays correspondant une adresse IP. En effet, avant de faire hberger un site, il est important de savoir o sont installs physiquement les serveurs sous peine de perdre btement du trac. Rappelez-vous, le ltrage Google donne priorit aux "locaux" pour les locaux. Si votre site en .com est hberg en Allemagne ou aux tats-Unis par une socit franaise, vous serez vu comme un tranger au march franais. Vous garantissez ainsi une perte de trac notable votre site. Ce nest certes pas une bonne affaire si vous passez par un tel hbergeur pour conomiser 0,5 euros par mois.
Adresse IP

Capturez ladresse IP de votre fournisseur : la commande UNIX ping, disponible sous lmulateur DOS sur les machines sous Windows, vous la donnera.
C:\> ping www.lemonde.fr

Cette commande vous renverra 193.159.160.139, hberg physiquement en Allemagne. Cest un nom de domaine en .fr, donc il est automatiquement vu comme un site franais o quil soit hberg. Un autre exemple : le serveur de www.webrankinfo.com a pour adresse IP 194.146.226.133 localis en France.

j j

http://www.hyper-lien.com/articles/ip-site.php est un petit outil en ligne qui vous donne

directement ladresse IP dun site web.


https://adwords.google.fr/select/KeywordToolExternal?defaultView=3. Ce logiciel en ligne de

j j

Google vous permettra dvaluer des expressions cls. Cest un des outils indispensables pour auditer des mots et expressions cls. www.google.com/webmasters/tools/?hl=fr. Google webmasters tools donne accs au webmestre de nombreux outils facilitant le travail de rfrencement. http://yoast.com/seo-tools/link-analysis/. Le site nerlandais propose des outils gratuits, payants ou en version dessai qui aident le rfrenceur. Il existe par exemple un plugin Firefox qui affiche le Page rank des backlinks lists dans Google webmasters tools. Cela offre un gain de temps pour apprcier en quelques coups dil une partie de la qualit des backlinks dun site.

234

Outils pratiques

http://noscript.net/. Add on pour Firefox an de scuriser votre navigateur en limitant la consommation de ressources par les ash mal cods et trop gourmands en ressources de votre processeur. http://www.wampserver.com/. Lenvironnement de dveloppement utilis : Windows, Apache, MySQL, PHP5 de Anaska. Il permet de dvelopper dans un environnement identique 99,95 % celui de votre serveur Linux de production. Les diffrences notables qui peuvent piger le codeur dbutant portent :

- Sur des dtails dimplmentation de .htaccess. Les hbergeurs OVH, Nuxit et quelques autres ont une tendance "personnaliser" des dtails qui peuvent perturber WAMP et rendre un .htaccess WAMP incompatible avec celui destin au serveur Linux de lhbergeur. - Le paramtrage Apache de votre serveur WAMP peut tre impossible reproduire sur un serveur mutualis, notamment lURL rewriting. - Certains hbergeurs prsentent des comportements dURL rewriting alatoirement surprenants ncessitant une modication substantielle du .htaccess ou de la programmation PHP des liens HREF gnrs. Exemple : lURL du site, nomDeDomaine.com/article/chargessociales/12/1.html est remplace par une string du style /gp60/stylez~/article/chargessociales/12/1.html.
j

Pour gnrer une entre dans un chier .htpasswd, voici une des multiples URL proposant un outil en ligne : http://www.htaccesstools.com/htpasswd-generator/.

Pour soumettre une URL


Quand vous prparez la mise en ligne dun site sous un nouveau nom de domaine, il est prfrable douvrir une page dattente ds que vous disposez du nom de domaine. Vous la remplissez avec un texte de quelques centaines de mots, truffs de mots et expressions cls an de prendre date avec les moteurs de recherche, dobtenir un "prolage" de votre futur contenu. Au passage, vous allez acqurir un peu danciennet et ainsi vous dbarrasser des protections contre le spamdexing opr depuis les trs jeunes sites web :
http://fr.siteexplorer.search.yahoo.com/free/submit pour soumettre son site Yahoo ; j http://www.google.fr/addurl/ pour soumettre son site Google ; j http://search.msn.fr/docs/submit.aspx pour soumettre son site Microsoft Live Search ; j http://www.exalead.fr/search??definition=submitYourSitePage pour soumettre son site au moj

teur franais Exalead.

235

Annexe Webographie

8.2 Conseils, astuces et dpannages


j

http://www.webrankinfo.com/forums/index.php. Forum sur le rfrencement o interviennent

j j j

des personnes de tout niveau, du dbutant lexpert. Ce forums et bien dautres donnent accs des astuces pour coder en expressions rgulires, en PHP, sans avoir lire et comprendre toute la documentation sur le sujet. On y trouve aussi des astuces, conseils, coups de main pour se dpanner ou avoir une ide face une situation incomprhensible. Voici un excellent exemple de bonne publication par ce site : http://www.webrankinfo .com/actualites/200812-le-referencement-en-2009.htm prsente un excellent topo du mtier du rfrencement en 2009 par rapport 2008. http://www.webmaster-hub.com/index.php est un autre forum classique et pratique pour le rfrencement, les problmes de programmation, les astuces, les coups de main. http://www.forum-marketing.com/index.php : un dernier forum francophone sur le rfrencement. http://www.mattcutts.com/blog/ : le blog de Matt Cutts, patron de lantispam team Google. On y trouvera des sujets inintressants (les photos de son chat, les logiciels prfrs de ses parents ), des informations intressantes touchant au rfrencement, plus ou moins prcises et des astuces intressantes (les conseils pour rinclure un site en black list, par exemple). Googlez interview matt cutts permet dobtenir de relles informations intressantes sur le rfrencement et Google. Une autre expression cl Google : Matt Cutts + terme de rfrencement. Exemple : Matt Cutts Duplicate Content renvoie une SERP contenant cette URL pointant une page en franais avec des informations intressantes sur le traitement par Google du propritaire original dun contenu : http://wordpress-tuto.fr/complements-de-matt- cutts-surle-duplicate-content-307. Pour sinitier facilement et comprendre les principes de la scurisation du back office dun site web, mais avec une faille de scurit, donc lire mais ne pas implmenter tel que : http://www.siteduzero.com/tutoriel-3-14649-proteger-un-dossier-avec-un-htaccess.html.
.htpasswd inviolable

Tout .htpasswd doit tre dans un rpertoire ddi accompagn dun .htaccess en deny all an de limiter laccs .htpasswd Apache et au protocole FTP ou autre retenu pour mettre jour le chier. Cette prcaution tait omise dans cette page dexplications par ailleurs trs bien faite pour expliquer les principes de la scurisation dun rpertoire dans un site web.

236

Normes et manuels

Pour obtenir des pages sur la programmation dans un .htaccess pour de lURL rewriting ou de la redirection par exemple, "googlez" tutorial .htaccess.
j j

Le blog officiel de Google est : http://googleblog.blogspot.com/. Des informations utiles pour mieux comprendre comment optimiser vos snippet et balises sur vos pages : http://googlewebmastercentral.blogspot.com/2007/12/answering-morepopular-picks-meta-tags.html.

8.3 Rsultats de recherche personnaliss


Le blog officiel de Google prsente depuis n juillet 2008 des informations sur cette approche : http://googleblog.blogspot.com/2008/07/more-transparency-in-customized-search.html. "Googlez" personalized search ou Google customized search results en limitant la date des pages aux derniers 31 jours listera les pages les plus rcentes sur ce sujet. En saisissant loption inurl:google, vous ltrerez les rsultats efficacement.

8.4 Normes et manuels


Nous avons vu que les cookies taient importants en web marketing. Voici quelques URL prsentant un net intrt pour les codeurs :
j j

Dnition des cookies : la RFC 2109 : http://www.ietf.org/rfc/rfc2109.txt. Sa remplaante, la RFC 2965 : http://tools.ietf.org/html/rfc2965.

Les codeurs utilisant ash trouveront de lintrt dans ces deux URL :
j

http://code.google.com/p/swfobject/wiki/documentation ou comment implmenter une animation ash en lui donnant un texte alternatif accessible aux bots de Google (et des autres moteurs). lURL de la traduction franaise de SWFobject2 : http://egypte.olympe-network.com/ swfobject-francais.html.

Thorie des graphes


Les mathmaticiens et les informaticiens de Google utilisent massivement cette branche des mathmatiques dans leurs algorithmes sur les backlinks, probablement pour lutter contre le spamdexing. Cette branche des mathmatiques est enseigne partir de bac+2 bac+4 selon les universits ou coles dingnieurs. Tout webmestre ou codeur nayant jamais abord cette

237

Annexe Webographie

branche des mathmatiques devrait sy plonger pour mieux apprhender le gnie logiciel et Google, bien sr. Voici quelques URL sur le sujet :
http://www.laas.fr/~lopez/cours/GRAPHES/graphes.html ; j http://fr.wikipedia.org/wiki/Thorie_des_graphes ; j http://www.apprendre-en-ligne.net/graphes/.
j

8.5 URL de codes sources


Dans ce paragraphe, vous trouverez les sites lorigine ou ayant inspir certains codes sources utiliss dans lexemple prsent dans ce livre.

Session invisible pour Google


Le code source de la fonction, session_region(), en charge de suivre le comportement des bots sur des URL et des pages optimises SEO et utilises dans lexemple est issu dune base dont lorigine est publie en libre accs :
j j j

Remi Aubert & Alan Boydell ; Remi : www.remiaubert.com ; Alan : www.analytics.fr.

Le code source dorigine servait traquer le trac des bots sur un site web via Google Analytics. Ce code source a t modi et adapt par Gilles Grgoire le 23/12/2008 pour remplacer son propre code moins lgant et dont il tait plus difficile dassurer la maintenance. Un bogue gurait dans le code source dorigine. Il a t signal aux codeurs dorigine qui ont mis jour leurs sources. Plusieurs sites fournissent la liste des bots en circulation (plus de 2 000 actifs en 2008 selon lun de ces sites). Il est recommand de mettre jour rgulirement cette liste depuis un de ces sites :
j j

La liste des bots utilise dans notre exemple provient de : BBclone www.bbclone.de ainsi que le script patterns.php. Un autre site rgulirement mis jour diffuse une liste tlchargeable automatiquement et quun codeur pourra utiliser pour mettre jour sa liste de bots automatiquement : http://www.robotstxt.org/db/schema.txt. Le http user agent du robot, la variable utilisable en PHP, correspond la ligne robotuseragent dans le chier tlchargeable.

238

URL de codes sources

Feuille de style
Certaines parties des feuilles de style de notre exemple ont t drives dexemples ou dinformations techniques exposs dans ces pages :
j j

http://www.cssdebutant.com/formulaire-css.html ; http://www.babylon-design.com/site/index.php/2007/09/24/192-boutons-extensibles-css-compatiblestous-navigateurs.

Rseaux sociaux
Un des exemples de codes sources pour faciliter le bookmarking dune page dun site web dans un site rseau social est de lauteur. Dautres exemples peuvent tre librement pris dun de ces sites :
j j j

http://justaddme.com/.

Lexemple utilise un code source issu de ce site qui permet de disposer de statistiques sur les clics des usagers : http://www.addthis.com/. http://www.letsgetsocialnow.com/.

239

INDEX

!
.htaccess ............................................................................. 65-66, 68-69, 71-72 contrle daccs ....................................................................................... 153 .htpasswd .................................................................................................... 154 inviolable ................................................................................................. 236

A
Accessibilit smantique ........................................................................................... 33, 56 technique .............................................................................................. 33, 56 Addthis ....................................................................................................... 162 Adresse IP ............................................................................................ 37, 234 AdWorders .................................................................................................. 226 AdWords ............................................................................................... 36, 158 Algorithmes ................................................................................................. 164 de cohrence ............................................................................................ 105 ALT .............................................................................................................. 46 Ancres ........................................................................................................... 35 Anomalie statistique .................................................................................... 106 Anti-fraude .................................................................................................... 36 Antispam team .............................................................................................. 27 Arc .............................................................................................................. 104 Article.php ............................................................... 72-73, 75, 79, 88, 94, 113 Articles.php ................................................................................................... 73 Article_rubrique ............................................................................................ 88 Automatiser (liens dun nuage) ................................................................... 107

B
Backlink .............................................. 27, 29, 32, 34, 40-41, 46, 55, 101, 103 effcacit ................................................................................................... 107 internes ...................................................................................................... 94

242

INDEX

qualit ...................................................................................................... 105 Barre verte .................................................................................................. 112 Black hat ..................................................................................................... 192 Bot .......................................................................................... 23-24, 26, 36-37 liste des bots et des OS ............................................................................ 147

C
Cartographier les URL ................................................................................ 160 Chapeau ........................................................................................................ 48 Chef de projet ............................................................................................... 16 Cloaking .......................................................................................... 37-38, 191 CMS ............................................................................................................. 44 Codage maladroit .................................................................................... 24, 37 Codeur .................................................................................................... 17, 28 Cohrence .................................................................. 32, 35, 92, 105-106, 108 Cohrent ................................................................................... 49, 76, 79, 104 Content Management System (CMS) ............................................................ 44 Converge ..................................................................................................... 112 Cookie ............................................................................................ 24, 38, 134 dnition .................................................................................................. 134 Copier-coller maladroit .................................................................................. 39 Cot du rfrencement .................................................................................. 44 Critres ......................................................................................................... 35 dans une page ............................................................................................ 45 de cohrence ..................................................................................... 103-104 quantitatifs ............................................................................................... 103

D
Densit ........................................................................................................ 106 Dpannages ................................................................................................. 236 Dsindexation .......................................................................... 26, 39, 106, 125 Dtection dincohrence ................................................................................ 77

243

INDEX

Duplicate content .................... 26, 38, 76, 79, 87, 91 93, 109, 125, 130, 183 interne ................................................................................................... 38-39 involontaires ..................................................................................... 115, 125 seuil ........................................................................................................... 93

E
chelle logarithmique .................................................................................. 111 Efficacit du backlink .................................................................................. 107 Enjeux du spamdexing .................................................................................. 36 Erreur codage en URL rewriting ........................................................................... 39 de codage ................................................................................................... 39 humaines .................................................................................................... 36 mthodologique .......................................................................................... 12 Exemple (site web) ....................................................................................... 45 Expression cl ................................................................................................... 20, 34-35 rgulire .......................................................................................... 68-69, 72 Expressions_cls .......................................................................................... 114 Exp_clef_dynamique ................................................................................... 116

F
Feuille de style ............................................................................................ 239 limites ...................................................................................................... 187 Fil de navigation ........................................................................................... 67 Flash (indexer) ............................................................................................ 194 Flux de Page rank ....................................................................................... 101 Formule du Page rank ................................................................................. 110 Frames ........................................................................................................ 186

244

INDEX

G
Gestion de nuages de liens .................................................................................... 124 de session par id dans lURL ................................................................... 135 Google .......................................................................................................... 28 Google bar ....................................................................................... 103, 112 Google writing ................................................................................... 24, 227

H
Historique ................................................................................................... 200 Hn ................................................................................................................. 45 HTACCESS .................................................................................................. 68

I
Incohrence (dtection) ................................................................................. 77 Indexer du Flash ......................................................................................... 194 Informations personnelles utilisables ........................................................... 205 Interactivit Web 2.0 ................................................................................... 163 IP (adresse) ........................................................................................... 37, 234

J
JavaScript .............................................................................................. 37, 185 Joomla .......................................................................................................... 44

K
KeywordTool ............................................................................................... 219

245

INDEX

L
Landing page .... 19, 22, 28, 31 34, 47, 55, 84, 107, 109, 113, 117, 121, 127 Landing_pages_id_article_url ...................................................................... 127 Levier sur les mots-cls ................................................................................ 35 Liens ............................................................................................................. 26 cohrents .................................................................................................. 106 en dur ........................................................................................................ 26 spam .......................................................................................................... 40 Linkbaiten ..................................................................................................... 40 Linkbuilding .................................................................................................. 33 Logiciel CMS ........................................................................................................... 44 de publication ...................................................................................... 57, 85 de publication de pages HTML .................................................................. 44 Longues tranes ............................................................................................. 21

M
Maladresses de codage .................................................................................. 24 Map locator ................................................................................................. 200 Matt Cutts ................................................................................................... 224 Md5(rand()) ................................................................................................. 128 Meta description ........................................................................................... 45 Mise en page fonctionnelle ......................................................................... 227 Mots-cls .......................................................................... 20, 32 35, 40, 102 dune URL ................................................................................................. 76 levier .......................................................................................................... 35 stratgique .......................................................................................... 46, 107

N
Netlinking .................................................................................... 32-33, 40, 54 interne ........................................................................................................ 55

246

INDEX

Normes et manuels ..................................................................................... Nuage de liens ............... 14, 32-33, 41, 55, 94, 106 108, 113, 120, 124, automatiser ............................................................................................... trop semblables ........................................................................................

237 129 107 125

O
Optimisation page HTML .......................................................................................... 31, 54 trop agressive ........................................................................................... 106

P
Page absentes de lindex de Google .................................................................. 182 datterrissage ........................................................... 19, 20, 34, 56, 107, 113 HTML ........................................................................................................ 25 mal positionnes ....................................................................................... 184 splash ....................................................................................................... 190 une page une langue ................................................................................ 191 Page rank ........................................................................... 27, 35-36, 103, 111 ux ........................................................................................................... 101 formule ..................................................................................................... 110 PR sculpting ............................................................................................. 131 Paidlink ...................................................................................... 36, 39-40, 183 Pnaliser le rfrencement ............................................................................. 38 Personnalized search results ........................................................................ 198 Pertes en positionnement ............................................................................... 76 PHP .............................................................................................................. 37 Popularit dune page HTML ....................................................................... 27 Positionnement ..................................... 19, 28, 30, 32, 34, 36, 41, 43, 55, 103 dun site Internet .................................................................................. 32, 55 pertes ......................................................................................................... 76 russir ........................................................................................................ 55

247

INDEX

PR (voir Page rank) .................................................................................... 112 PR sculpting ............................................................................................. 131 transfert .................................................................................................... 106 Principes rfrencement naturel ................................................................................. 54 Proprits dun backlink ........................................................................................... 104 dune page ............................................................................................... 105

Q
Qualit du backlink ..................................................................................... 105

R
Random ....................................................................................................... 128 R criture la vole des URL .................................................................................... 66 dURL ........................................................................................ 68-69, 71-72 rgle ...................................................................................................... 69-70 Rfrencement ............................................................................ 32, 34, 36, 41 naturel ............................................................................................ 19, 31, 54 naturel dun site ................................................................................... 44, 55 tricher ou pas ............................................................................................ 35 Region.php .................................................................................................. 148 Rgle de rcriture dURL ....................................................................... 69-70 Rel=nofollow .......................................................................................... 88, 91 Rseaux sociaux ............................................................................ 29, 158, 239 Russir un positionnement ............................................................................ 55 RewriteEngine on .......................................................................................... 69 RewriteRule .................................................................................................. 69 RFC 2109 ................................................................................................... 135 RFC 2965 ................................................................................................... 135 Rubrique ....................................................................................................... 28

248

INDEX

primaire ................................................................................................... 125 sous rubriques ............................................................................................ 28

S
Search Engine Results Page(s) ................................................................ 12, 20 SERP ..................................................... 12, 20, 22, 31 33, 35, 38, 47, 54-55 Session ..................................................................................................... 25-26 invisible pour Google ............................................................................... 238 Session_region() .......................................................................................... 140 Session_start() ..................................................................................... 139, 150 Seuil de duplicate content ............................................................................. 93 Site web exemple .......................................................................................... 45 Snippet .......................................................................................................... 77 Soumettre une URL .................................................................................... 235 Sous rubriques .............................................................................................. 28 Spam de liens ............................................................................................... 40 Spamdexing .............................................................. 24, 34 38, 40, 105, 108 enjeux ......................................................................................................... 36 involontaire .............................................................................................. 191 page ........................................................................................................... 36 Splash page ................................................................................................. 190 Statistique (anomalie) .................................................................................. 106 Stratgie de mots-cls ............................................................................................... 56 de rfrencement .......................................................................... 14, 34, 113 globale de rfrencement ............................................................................ 43 Structure de proprits ............................................................................................ 104 de site ........................................................................................................ 28 SWFobject2 ................................................................................................. 194

249

INDEX

T
Tags clouds ................................................................................. 14, 32, 41, 94 Techniques de triche ............................................................................... 36, 40 Texte des ancres .................................................................................................. 45 dupliqu ..................................................................................................... 93 Thorie des graphes .................................................................................... 237 Title ........................................................................................ 22, 45, 109, 113 de visuel ..................................................................................................... 46 TOP5 ............................................................................................................ 35 Traffic manager .................................................................................. 15-16, 55 Transfert de PR ........................................................................................... 106 Tricher ou non en rfrencement .................................................................. 35

U
URL ................................................................................................... 25-26, 37 cartographier ........................................................................................... 160 de codes sources ...................................................................................... 238 diffrentes ................................................................................................... 38 humaine ..................................................................................................... 68 machine ...................................................................................................... 68 rewriting ...................................................................... 65-66, 68, 72-73, 130 soumettre .................................................................................................. 235 unique ........................................................................................................ 38

W
Web 1.0 ........................................................................................................ 31 Web 2.0 ..................................................................................... 29-30, 41, 158 interactivit Web 2.0 ................................................................................. 163 Web analytics .............................................................................................. 226

250

INDEX

Web marketing ...................................................................................... 55, 102 Webmestre .................................................................................................... 16

Z
Zoom.php ................................................................. 93-94, 113, 116, 124, 164

251

Notes

Notes

Notes

Notes

Notes

Notes

Notes

Notes

Notes

Notes

Notes

Notes

Compos en France par Jouve 11, bd de Sbastopol - 75001 Paris

Vous aimerez peut-être aussi