Vous êtes sur la page 1sur 264

Copyright 2009 Micro Application - 20-22, rue des Petits-Htels - 75010 Paris

1re dition - Fvrier 2009

Auteur - 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 fin de dsignation des produits en tant que noms de ces derniers.

ISBN : 978-2-300-016134
Couverture ralise par Sbastien Wiegant
MICRO APPLICATION Support technique :
20-22, rue des Petits-Htels galement disponible sur www.microapp.com
75010 PARIS http://www.microapp.com
Tl. : 01 53 34 20 20
Fax : 01 53 34 20 00

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 1613
daccueil du site, entrez la rfrence 4 chiffres indique sur le prsent
livre. Vous accdez directement sa fiche produit.
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 afin 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
Afin de faciliter la comprhension des techniques dcrites, nous avons adopt les
conventions typographiques suivantes :
j gras : menu, commande, bote de dialogue, bouton, onglet.
j italique : zone de texte, liste droulante, case cocher, bouton radio.
j Police bton : instruction, listing, texte saisir.
j : 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.

bas
Sommaire
1 Optimiser des pages pour Google 18

1.1 Des concepts et termes techniques matriser ........................ 20


Mots, expressions cls, requte, SERP .................................... 20
Google et les landing pages ................................................ 20
Architecture trs simplifie dun moteur .................................... 23
Mots-cls et Google writing ................................................. 24
Cookies, sessions et URL ..................................................... 24
Lien et backlinks ................................................................ 26
Premire approche du Page rank .......................................... 27
Structure de site : hirarchiser ............................................... 28
Le rfrencement : un savoir-faire difficile acqurir ................... 28
Codage web2.0 et rseaux sociaux ..................................... 29
Principes du rfrencement et du positionnement naturel .............. 31
1.2 La formule magique du rfrencement .................................. 34
1.3 Tricher ou non en rfrencement ......................................... 35
Spamdexing : les diffrentes techniques de triche ...................... 36
1.4 Rsum .......................................................................... 40

2 Automatiser le rfrencement avec PHP et MySQL 42

2.1 Introduction .................................................................... 44


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

3 Page rank sculpting et backlinks 100

3.1 Introduction .................................................................. 102


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

4 Rfrencement et gestion de session 132

4.1 Pourquoi la gestion de session ? ....................................... 134


4.2 Cookies et gestion de session par URL ................................ 134
4.3 Les objectifs du codeur/rfrenceur en gestion de session ...... 136
4.4 Gestion de sessions en URL rfrences .............................. 139
Session en URL invisible Google ....................................... 139
Code source session invisible Google ................................ 140
Code source de region.php ............................................... 148
4.5 Protger son site des hackers ............................................ 153
.htaccess et contrle daccs ............................................. 153

5 Rfrencement et Web 2.0 156

5.1 Web 2.0 et Google ....................................................... 158


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

6 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
6.2 Pages mal positionnes : dautres causes ............................ 184
Les sites concurrents ......................................................... 184
Les backlinks .................................................................. 185
JavaScripts .................................................................... 185
Frame .......................................................................... 186
Les limites des feuilles de style ............................................. 187
Splash Page .................................................................. 189
Une page : une langue .................................................... 191
Spamdexing involontaire .................................................. 191
Dtecter une triche : facile ! ............................................... 191
Optimisations trop agressives ............................................. 192
6.3 Flash et le rfrencement dans Google ............................... 193
SWFobject2 pour indexer du Flash ...................................... 194
6.4 Rsum ........................................................................ 195

7 Google personalized search results 196

7.1 Les rgles du positionnement vont changer .......................... 198


7.2 Intrts des rsultats de recherche personnaliss ................... 202
7.3 Arrive de Personalized Search Results .............................. 204
7.4 Les informations personnelles utilisables ............................. 205
Google affiche des limites ................................................. 205
Rsumons-nous sur Personalized search resultats ...................... 207
7.5 Pourquoi Personalized search results ? ............................... 208
Lamlioration des SERP .................................................... 208
Freiner les rfrenceurs ..................................................... 208
La crise conomique ........................................................ 209
Un avantage concurrentiel important .................................... 209
7.6 Les limites imposes Google .......................................... 210
Le systme doit sauto duquer ............................................ 210
Ne pas froisser les utilisateurs ............................................. 212
Ne pas planter le service .................................................. 212
7.7 Baisse ou hausse du trafic ................................................ 213
Les constantes ................................................................ 214
Sommaire

7.8 Rfrenceur 2.0 ............................................................. 215


Mieux comprendre la logique de personnalisation ................... 215
Principes probables de la personnalisation ............................ 220
Web analytics et rfrencement naturel ................................. 225
Programmation et rfrencement naturel ................................ 227
Google writing et rfrencement naturel ................................ 227
bauche dalgorithme : rfrencement et personnalisation ......... 228
7.9 Rsum ........................................................................ 230

8 Annexe - Webographie 232

8.1 Outils pratiques ............................................................. 234


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

9 Index 241
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 fil
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 conflictuelle. 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 enfin 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 conflit 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 conflits dans les
demandes faites aux dveloppeurs pour coder les programmes.
Il faudra donc identifier des compromis et les coder en consquence. Il y a une infinit
de cas particuliers. Il est bien sr impossible de tous les traiter dans ce livre.

9
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 conflits 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 systme dexploitation : Linux par exemple ;
j moteur http, par exemple : Apache ;
j langage de codage des pages, par exemple XHTML/CSS ;
j langage de script ct navigateur, JavaScript par exemple ;
j langage de script ct serveur : PHP5 ;
j 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 Apache vs. IIS ;
j PHP vs. ASP ou .NET ;
j 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 profiter du trafic 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. Rflchir 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 Le rfrencement regroupe les actions techniques sur le site.
j 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, simplifie 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 les fondamentaux des moteurs de recherche et de Google en particulier ;
j les problmatiques de rfrencement et autres cadratures de cercles rsoudre ;
j 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
infliges par Google suite des erreurs techniques sur le site est un des devoirs du
codeur.
j Un site accessible smantiquement sera "compris" par Google. Le choix des
mots-cls et autres rflexions 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.
j 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, modifis
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.
j 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 final dans lindex
de Google ; il aura donc une influence 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 afin que toute personne puisse nous lire, quelle soit dbutante ou confirme 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.

Enfin 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 identifiera 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.
j Le webmestre, dbutant ou confirm, 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 planifier 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.
j 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.
j 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 ....... 20
1.2 La formule magique du rfrencement ................ 34
1.3 Tricher ou non en rfrencement ...................... 35
1.4 Rsum de ce chapitre ................................. 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.
1 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 profil 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 fil des paragraphes
puis prciser les parties qui concernent particulirement le codeur.
Voici quelques concepts ou dfinitions comprendre afin 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 signifiant : 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
influencer 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 1

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

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 afin 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
1 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 justifie 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 le title de la page, limit une dizaine de mots ;
j 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 1

Architecture trs simplifie 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 finalise : indexer sur leurs mots-cls les pages de tout
lInternet techniquement accessible.
Ces programmes de Google nont pas la finesse 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
1 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 dinfluencer 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 identifier 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 1

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 fiable 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 conflits 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 fiscalit, les charges sociales, la gestion
financire. 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 conflit 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 profil prcis.
Par rapport aux cookies, cette mthode offre lavantage dtre 100 % fiable.
Linconvnient, cest que Google napprcie pas trop. En effet, on trouve de tout dans les
URL session : des jetons dauthentification, des codes permettant la logique des
scripts PHP de ragir, etc.

25
1 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 final, 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 1

j dune page du mme site web (le nom de domaine est identique pour les deux URL
des deux pages interconnectes par ce lien) ;
j 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
1 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 filles.
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 afin 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 1

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.
j 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.
j 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.
j Google va donc soigneusement protger son succs auprs des internautes en luttant
contre toute pollution de son index. La masse des utilisateurs fidliss 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 afin 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
1 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 1

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 justifiant des changes avec les internautes, profitez-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 linteractivit de toute page avec des internautes : avis, vote, notes, questions/
rponses, etc. ;
j 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 signifie 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 dfinit 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
1 Optimiser des pages pour Google

j 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.
j 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 afin 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 finalise 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 un rfrencement de qualit, cest--dire les travaux doptimisation des pages du site
respectant une cohrence vis--vis des mots-cls utiliss ;
j puis un travail de netlinking interne (nuages de liens) ;
j enfin 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 influeront fortement sur le rfrencement du site et
sur son positionnement dans lindex du moteur.

32
Des concepts et termes techniques matriser 1

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 influence 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.
j 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
1 Optimiser des pages pour Google

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 ;
j le volume des backlinks ;
j les pages vises : on pourra favoriser certaines pages plutt que dautres et ainsi
influencer 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 fil de lacquisition de statistiques, de retours sur lutilisation du site, des
changements sont apports cette stratgie :
j de nouveaux mots ou expressions cls sont prendre en compte ;
j de nouvelles pages sont ajoutes, de nouvelles rubriques sont cres ;
j de nouvelles landing pages sont dfinies 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.
Afin 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 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).
j 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 1

j 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.
j 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>
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.
j Du volume de backlinks pointant vers notre page et ayant notre expression cl dans
le libell du lien.
j 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.
j 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
1 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 floue 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 significatifs 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 1

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 qualificatifs 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
1 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 identification, 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 profil de linternaute : un clic ici donne
toujours cela, mais ce mme clic avec une configuration 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
afin de ne pas polluer lindex du moteur avec de multiples pages contenus identiques aux URL
diffrentes.

38
Tricher ou non en rfrencement 1

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 film,
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.
j 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.
j De multiples sites publient la mme information, vendent le mme produit avec le
mme descriptif, etc.
j 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.
j Une erreur de codage en URL rewriting faisant correspondre plusieurs URL
distinctes vers la mme page physique.
j Un bogue dans la gestion informatique des contenus aboutissant avoir des contenus
identiques disperss sur plusieurs pages diffrentes.
j Vos contenus ont t dupliqus par un autre site, volontairement ou non.
j Des cumuls de plusieurs petites erreurs aboutissent des contenus identiques partiels
dans des pages trop lgres en volume de contenu.

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
1 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
floues, potentiellement contraires la lgislation fiscale 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 dautomatiser les URL ;
j dviter de gnrer accidentellement du spamdexing ;
j dviter de publier ou afficher des informations perturbant la logique de Google ;
j 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 1

Deux autres aspects ont normalement attir lattention du codeur :


j utiliser la programmation pour des fonctions web2.0 pour amliorer rfrencement et
positionnement ;
j 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 .............................................. 44
2.2 Codes sources site web exemple du livre ......... 44
2.3 Coder une optimisation de page pour Google ..... 45
2.4 Donnes, mots-cls, rfrencement
et mthodologie ......................................... 47
2.5 Rfrencement, positionnement naturel : principes .. 54
2.6 Publication de pages dynamiques .................... 56
2.7 Rsum ................................................... 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.
2 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.
j 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.
j La rapidit pour ajouter, modifier 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 2

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 Affichage dune liste de rsultats, des rsums darticles, sur une recherche par clic,
par exemple tous les articles sur la fiscalit dentreprise.
j Un clic sur un de ces articles affichs lance la page publiant la totalit de larticle.
j Un article peut appartenir plusieurs thmes, rubriques, ce qui va poser des
problmes face Google.
j 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 afin 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 son title ;
j 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 ). ;
j les textes entre balises Hn, de h1 h8 ;
j les mises en exergue ;
j les textes des ancres de liens ;

45
2 Automatiser le rfrencement avec PHP et MySQL

j les libells des backlinks entrant vers la page ;


j les textes en balises ALT et TITLE de visuel ;
j les textes ;
j les mots composant lURL ;
j la densit dun mot prcis face aux autres mots-cls ;
j 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
trafic. 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 2

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.

Influence sur le positionnement

Le volume de pages HTML correctement rfrences influe 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 afin 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 fixer 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.
j 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 fixant 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 afin de les afficher dans les endroits adquats et efficaces de la page afficher
automatiquement.

47
2 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 afin 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 Dun title de page.
j Dun meta description.
j Dun titre H1.
j Dun petit paragraphe que nous appellerons chapeau. Il sera en charge dafficher un
rsum de larticle, un chapeau donc dans le jargon des rdacteurs.
j Dun grand paragraphe que nous appellerons texte principal.
j Dune image dote dune balise ALT et dune balise TITLE.
j Dun gabarit gnral de prsentation : Logo en haut, bandeau graphique de
prsentation, dfinition 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 2

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 id : la cl unique de chaque enregistrement de cette table. Classique.
j 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.
j 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 afin 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.
j 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.
j texte : le texte complet de larticle.

49
2 Automatiser le rfrencement avec PHP et MySQL

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


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.
j contributeur, source, poids : Ces champs sont prsents pour la logique mtier de
ce site exemple.
j 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.
j title : title de cette page. Rappel : il doit contenir des mots-cls. La logique de
rfrencement va sappuyer sur ce champ.
j 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.
j 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 id : la cl unique de chaque enregistrement de cette table. Classique.


j 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 2

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 afin de les rendre compatibles avec Internet : passer de
upper lower case, liminer tout slash, antislash, quote et guillemet, etc. Voir les
manuels PHP.
j URL doit tre unique. Tout caractre non admis entranera une erreur 404 si on utilise
ce champ.
j 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.
j 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
2 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 id_article : lidentifiant de larticle.


j id_rubrique : lidentifiant de la rubrique. Le mme article peut appartenir autant
de rubriques que ncessaire.
j 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 fils de navigation sans erreur. Nous nabordons pas la gestion dun fil
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 2

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);

j id : la cl unique de chaque enregistrement de cette table. Classique.


j nom : le nom de la rgion.
j acronyme : la version simplifie du nom de la rgion.

Importer mots-cls et donnes


Il faut disposer de donnes dans les diffrentes tables.
Ces donnes doivent respecter la procdure didentification des mots-cls dcide pour ce
site exemple :
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.
j 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
2 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 afin de tenter de les
faire afficher dans les SERP dun moteur sur un ou des mots-cls prcis.

Optimiser une page HTML signifie mettre en uvre des techniques Internet et
rdactionnelles sur cette page afin 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 dfinit 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 afin de la positionner naturellement vers le top5 dans les SERP de
Google :
j Optimisation de la page, objet du prsent chapitre.
j 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.
j 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 afin 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 2

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
finalise 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.
j 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 influeront 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
2 Automatiser le rfrencement avec PHP et MySQL

j technique : Le robot doit pouvoir accder la page et son contenu. En effet, de


nombreux sites ont des JavaScripts et autres gadgets techniques (flash) qui bloquent
plus ou moins les bots de Google.
j 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 fil de lacquisition de statistiques, de retours sur lutilisation du site, des
changements sont apports cette stratgie :
j De nouveaux mots ou expressions cls sont prendre en compte.
j De nouvelles pages sont ajoutes, de nouvelles rubriques sont cres.
j De nouvelles landing pages sont dfinies 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 2

j sur clic de linternaute sur un lien en dur (sinon un bot de Google ne pourra pas
suivre le lien) ;
j 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
simplifi 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 fil de navigation, nous avons simplifi 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
2 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 spcifiquement 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 2

<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
2 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 2

</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
dfinit 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
dfini 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
2 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 2

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 02 cest le n de rubrique : pratique pour dboguer.
j Un lien HTML associ un title de lien.
j 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
2 Automatiser le rfrencement avec PHP et MySQL

j 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 fiscalit 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 2

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 fichier
.htaccess pilotant lURL rewriting. Nous allons ajouter de nouveaux scripts et de nouvelles tables au fil
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 index.php est la page daccueil du site.
j article.php affiche tous les articles dune mme rubrique.
j zoom.php affiche le contenu dtaill dun article prcis.

65
2 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 simplifiant, la ralit technique dInternet, afin de rester lisible :
j Un lien comme celui-ci est envoy au serveur http.
j Le serveur http, Apache, compare cette URL au contenu dun fichier, .htaccess.
j Si cette URL rencontre une structure dURL identique dans ce fichier, il y a une
galit et donc Apache dclenche une rcriture de lURL. Le fichier
.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, finances et fiscalit 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 2

/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 fichiers 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 fichiers 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 fil de navigation reprsentant le rel chemin parcouru par linternaute.

67
2 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 fichier .htaccess (point suivi de
htaccess) qui contient les instructions pilotant Apache dans la gestion des URL.
Ce fichier .htaccess utilise un ancien langage informatique appel "expressions rgulires".

Fonctionnement simplifi 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 fichier .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 fichier .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 2

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 fichier .htaccess.
([_azAZ09]+) : toute chane de caractres dont chacun de ceux-ci appartient un des
intervalles suivants :
j de a z minuscule ;
j de A Z majuscule ;
j de 0 9 ;
j 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
fichier .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
2 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 2

&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 = fiscaliteentrepriseSARL
$2 = rubrique
$3 = 1
$4 = 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 fichier .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
2 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 fichier .htaccess.
j 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 afin 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 La pagination des rsultats. Dans notre exemple, on affiche les articles cinq par cinq.
j 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 2

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.
j MiseEnPage : les fonctions lies la mise en page.
j Init : linitialisation des accs aux tables et base de donnes.
j Biblio : bibliothque contenant des fonctions diverses et varies que nous allons
utiliser au fil des pages.
j $referencement = "referencement"; : vieille habitude, nous prfrons toujours
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".
j if (isset($_GET["referencement"])) : Si largument referencement existe et quil
contienne une valeur, on le rcupre dans la ligne de code suivante.
j $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 :
j rubrique, critre que nous avons dj voqu auparavant ;
j region que nous voquerons plus loin.

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

73
2 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";
}

j 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 :
$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 2

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
2 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 Contributeur ;
j URL ;
j 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 2

// 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 (-) afin 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.

Afin 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 figurer ces mots cls
stratgiques dans le meta description afin de matriser le rsum affich en snippet.

c Fig. 2-9 : Un snippet Google dtaill

Ainsi un title de page sera constitu :


j du title de la rubrique (voir table rubrique) ;
j 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
2 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 2

}
// 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 Simule les calculs pour laffichage des articles cinq par cinq en grant la pagination.
j Calcule les (5) articles afficher dans la page demande.
j 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
2 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 2

{ $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
2 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 2

j 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().

Un principe simple est appliqu :


j Nous avons ajout de 1 6 champs issus des tables rubrique et article dans $page.
j chaque ajout correspond un ajout de ** comme dlimiteur.
j Nous comptons le nombre dajouts.
j Le meta final ne doit pas dpasser 10 12 mots pour un title et 20 24 mots
environ pour un meta description.
j 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 On extrait chaque ajout, une substring donc, dlimit par **.
j On limine les ** devenus inutiles.
j On range les mots de cette substring dans un tableau.
j On transfre et on concatne les $pas premiers mots de ce tableau dans la string
$meta.

83
2 Automatiser le rfrencement avec PHP et MySQL

j 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 2

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>

finances-fiscalite-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 afin 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 afin de
personnaliser les title et meta description de la page. On pagine pour de vrai :

85
2 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 2

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 problme de duplicate content. Si nous affichons
un chapeau dun article appartenant plusieurs rubriques, nous aurons plusieurs URL
distinctes contenant un mme article. Il faut donc slectionner le seul lien que nous
laisserons accessible au bot de Google pour liminer ce risque.

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

87
2 Automatiser le rfrencement avec PHP et MySQL

Lapproche retenue dans ce site exemple est :


j Un article appartient principalement une seule rubrique que nous appellerons
primaire.
j Les autres rubriques auxquelles un article peut appartenir seront appeles
secondaires.
j Seuls les liens vers des articles dpendant de manire primaire de la rubrique en
affichage via article.php doivent tre accessibles Google.
j Ces informations de dpendance sont gres dans la table article_rubrique. Un
article a une seule rubrique primaire.
j 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 2

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
2 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 2

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
2 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.
j 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 2

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 fixer 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
2 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
dfinition, 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.
j 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 fil 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
enfin src = la rubrique dorigine du clic, permettant ainsi de grer un ventuel fil 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 2

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
2 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 2

<!-- 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
2 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 2

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 .............................................. 102
3.2 Principe dun backlink .................................. 102
3.3 Principe du Page rank (PR) ............................. 103
3.4 Algorithme, nuages de liens et landing pages ...... 106
3.5 La formule "officielle" du Page rank ................... 110
3.6 Piloter la stratgie de rfrencement .................. 113
3.7 Rsum de ce chapitre ................................. 131
Page rank
sculpting et
backlinks
L e PR sculpting est bas sur lutilisation des liens internes
dans un site des fins de positionnement dans lindex
de Google. On gre le flux de Page rank, on lassocie
des mots-cls pertinents ; ainsi, on influence 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".
3 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.
j 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 LURL de la page vise par le lien : obligatoire.
j 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) 3

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 les critres quantitatifs ;
j les critres de cohrence.

Les critres quantitatifs dun backlink


Ce sont les critres les plus faciles mesurer :
j Le Page rank de la page. Il est approximativement indiqu par le champ PR de la
Google bar.
j 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
3 Page rank sculpting et backlinks

j 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
rflexion 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
rflexion 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 Une page HTML est un sommet.
j 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 URL de la page de dpart ;
j URL de la page darrive ;

104
Principe du Page rank (PR) 3

j texte du libell du lien dcompos mot par mot ;


j 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 URL ;
j Page rank ;
j TITLE de la page ;
j META DESCRIPTION ;
j premier texte entre balises <h1> ;
j premier texte en balise ALT dune premire image ;
j 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 Dans le TITLE ? Autrement, on minore le transfert de Page rank de 20 %.
j Dans un titre H1 ? Autrement, on minore le transfert de Page rank de 10 %.
j 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 final, 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
3 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 rflexion pourra tre perfectionne au fil 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 quitable : le Page rank boucle entre les pages dun mme thme. Ce qui sort par un
lien dune page reviendra via un autre lien.
j 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.
j 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 3

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 Elle doit tre de prfrence en haut de la hirarchie de navigation.
j Elle a un menu de navigation.
j 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 simplifier 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
3 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 Une table contient les expressions cls du site. Exemple dune expression cl pour
notre exemple : cration dentreprise.
j On cherche toute page contenant cette expression cl dans son title. On obtient une
liste.
j 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 3

Au-del dune trentaine de caractres, deux chanes de caractres identiques peuvent


entrer en conflit 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 afin de "casser" la dtection :
j Ne pas afficher les liens dans le mme ordre chaque fois.
j Limiter le nombre de caractres dun libell de lien de manire en avoir moins de
35.
j 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
j 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 prfixe 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.

Enfin, 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 flux 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
3 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 fil 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 modifie 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 afin 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 dfini comme le nombre de liens mis par la page A ; ce sont donc les liens
sortants. Le Page rank de la page A est dfini 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 Description

PR(A) Le Page rank de la page A. Celui que nous voulons calculer

PR(Tn) 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 3

Tableau 3.1 : Formule du Page rank

C(Tn) Le nombre de liens sortant de la page Tn. Chaque page T a


plusieurs liens, enfin 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.

D Coefficient damortissement. d est considr gal 0,85.

(1 d) Une astuce pour influencer la convergence

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 fil 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 simplifier nos calculs et bien illustrer
notre propos.

Tableau 3.2 : Page rank affich et calcul

PR affich (log base 10) Page rank "rel", calcul quelques dcimales prs, exprim sans
log

PR 0 0 PR < 1

PR 1 1 PR < 10

PR 2 10 PR < 100

PR 3 100 PR < 1000

PR 4 1000 PR < 10000

etc.

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
3 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 modifie 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 fil 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.
j 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.
j 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 finale juste. En attendant, il peut prendre une valeur intermdiaire nayant
pas fini 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 finalis.
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 finale.
Nous explorerons les consquences de cette formule pour le rfrenceur :
j Google lutilise pour lutter contre le spam de backlinks.
j 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

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, afin 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.
j 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 fin de la page, il va falloir


insrer le code grant le nuage de liens.

113
3 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 identifier la prsence de
ces 2 mots dans le title.

114
Piloter la stratgie de rfrencement 3

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 Risque de quelques duplicate contents involontaires mais de faible ampleur sur
quelques pages.
j 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 afin 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 simplifier 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
3 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 identifi 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 3

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
3 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 dfinit 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 afin 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 3

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,
vUY,
AAAAAACEEEEEIIIINOOOOOUUUUY);
$s_noAccent
= strtr($s_noAccent,
yy,
aaaaaaceeeeiiiinooooouuuuyy);
// du pur ascii 7bit - on simplifie les comparaisons

$expression_noAccent
= strtr($expression_nohtml,
vUY,
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
3 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 On rcupre son ID. Il nous sera ncessaire au cas o la page serait en adquation
avec notre recherche sur le title.
j On rcupre son title de page dans la variable string $s.
j On transforme le title et lexpression en texte iso sans code HTML (ou un
sexprime par exemple) via la fonction html_entity_decode.
j On limine tous les caractres accentus via la fonction strtr().
j On recherche dans la chane (variable string $s_noAccent) contenant le title la
sous-chane $expression_noAccent.
j 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
simplifier la gestion du rfrencement et fiabiliser nos comparaisons. Il existe de
multiples dclinaison autour dune expression cl comme cration entreprise.

120
Piloter la stratgie de rfrencement 3

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 simplifie 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.
j 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 fiabilit 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.
j 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 fiabilise et
simplifie le travail de comparaison.

Revenons notre code source. Nous avons identifi 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 identifier 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 :
j $id_landing_page : lID unique de chaque enregistrement de cette table ;
j $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
compteur va nous aider contrler le nombre de liens lors de la construction la

121
3 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,
vUY,
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 3

$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 $id_global : lID de chaque enregistrement de cette table. On lincrmente chaque
insertion dans la table.
j $id_depart : cette variable a t instancie dans la boucle 2. Cest lID de la page de
dpart du nuage de liens.
j $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.
j $cible : cest lID de la page cible. Grce lui, on pourra construire lURL vers la
page.

123
3 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 fin 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 modifi le script PHP zoom.php afin de mettre en service laffichage du nuage
de liens.
Les liens afficher sont contenus dans deux tables distinctes :
j La table landing_pages_id_article_url contient le backlink pointant vers la landing
page cible.
j 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 3

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 modifications 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
3 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 3

{
$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
3 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 3

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 enfin 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 Dans un tableau deux dimensions : une pour les nombres, une pour les chanes de
caractres.
j 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.
j Gnrer un nombre alatoire chaque ligne du tableau et le dposer dans la colonne
numrique du tableau bidimensionnel.
j Trier le tableau .
j Afficher les chanes du tableau.

Lendroit idal pour faire cela est la fin 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 modifier 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
3 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 lURL de article cible ;
j le nom de la rubrique PRIMAIRE de cet article ;
j 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 3

// 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 ? ...................... 134
4.2 Cookies et gestion de session par URL ............... 134
4.3 Les objectifs du codeur/rfrenceur en gestion
de session ............................................... 136
4.4 Gestion de sessions en URL rfrences ............. 139
4.5 Protger son site des hackers .......................... 153
Rfrencement
et gestion de
session
A fin 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

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 Quelles sont les pages visites ?
j Dans quel ordre ?
j Quels sont les mots-cls saisis dans un moteur pour arriver sur une des pages du
site ?
j Quels sont les produits regards ?

Dans de nombreux autres cas, le gestionnaire du site aura besoin dauthentifier un


internaute puis de lui assurer un change scuris.
La logique applicative du site pourra avoir besoin de connatre un paramtrage prcis :
j Linternaute a demand un filtre appliquer sur toutes ses demandes.
j 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 afin de contenter positivement
les multiples demandes et besoins du gestionnaire du site.

Cookies

Le cookie est un fichier 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 4

En fixant une longue dure de vie son cookie, un site web peut ainsi construire des historiques sur ses
internautes sans avoir besoin de les identifier. Le fichier du cookie peut stocker des informations,
typiquement un code ou une paire didentifiant 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 identifi 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 didentifier 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 identifi 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, vrifier un droit daccs, etc.

Plusieurs problmatiques vont survenir avec ces techniques :


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

135
4 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 identifi de nouveau
et suit votre navigation sur le site web Sb.

Voici une anecdote. Suite une fuite dun fichier log, des personnes se sont amuses aux tats-Unis
identifier 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 les fonctionnalits destines tracer les internautes pour constituer un historique ou
personnaliser laffichage ;
j 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 filtrer 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 4

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
4 Rfrencement et gestion de session

Pour protger notre rfrencement, nous modifierons article.php et la fonction haut() de


la classe MiseEnPage, du fichier 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.
j 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.4 Gestion de sessions en URL rfrences


Nous allons modifier 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 filtrant 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 identifier qui est le
possesseur de tel ou tel filtre.
Les URL et sessions gnres seront gres par Apache, soit via Cookies, les URL restent
intactes, soit via URL modifies 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 modifie 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 filtre 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 A un session_start() pour la page index : inutile mais pratique pour dboguer.
j A un session_start() pour tout affichage via article.php.

139
4 Rfrencement et gestion de session

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

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

Code source session invisible Google


Le code source de la fonction est issu dune base dont lorigine est publie en libre accs :
j Remi Aubert & Alan Boydell ;
j Remi : www.remiaubert.com ;
j Alan : www.analytics.fr.

Le code source dorigine servait traquer le trafic des bots sur un site web via Google
Analytics. Ce code source a t modifi 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 4

$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
4 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 4

//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
4 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 fichier 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 4

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
4 Rfrencement et gestion de session

On considre que tout visiteur est un humain. Sil y a un http_REFERER, on confirme 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 4

. "\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 fin du
fichier 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
4 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 dfinissent 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 filtre 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 4

<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
4 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 4

<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
4 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 Article/region : via URL rewriting, on va adresser article.php en passant une rgion
ID en argument.
j LID de la rgion entre / (slash).
j 1.html indique article dafficher la page 1.
j Le nom de la rgion.
j 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 Une URL modifie serait utilise au lieu dune URL propre.
j Deux URL distinctes mnent la mme page mais lune nest pas accessible
Google.
j La page o la pose de filtre 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 modifie. 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 filtre.
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

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 bot de moteur ;
j scan de rpertoire : aspirateur de site, logiciel traquant les faiblesses dun site, etc. ;
j 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 crer un rpertoire mdp (comme Mot De Passe) ;
j Crer un fichier .htaccess.

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


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

153
4 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 les include PHP ncessaires pour se connecter MySQL ;
j les include PHP ncessaires pour accder aux fonctions permettant de raliser des
entres/sorties sur la base.

Ce que prcise ce fichier .htaccess :


j pas de AuthGroupFile gr ;
j un chemin daccs absolu vers un fichier .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 fichiers .htaccess ncessaires.
Il faut un utilisateur valide pour accder aux contenus de ce rpertoire :
j Tout utilisateur possdant lidentifiant plus le mot de passe grs dans le fichier
.htpasswd.
j 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 4

Le fichier .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 identifiant, le mot de passe
souhait et vous navez plus qu recopier cette ligne dans notre fichier .htpasswd.
Cette ligne dans le fichier .htpasswd signifie que lidentifiant 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 didentifier le vrai mot
de passe correspondant.
Il faut donc bloquer tout accs ce fichier .htpasswd. Ainsi personne ne pourra tenter de
renverser le code contenu dans le fichier et obtenir ainsi le couple (identifiant, 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 fichier .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 afin de pouvoir mettre jour ce fichier. 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 ................................... 158
5.2 Rseau social et rfrencement ........................ 159
5.3 Interactivit Web 2.0 et rfrencement automatis . 163
5.4 Rsum de ce chapitre ................................. 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.
5 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 identifier les pages dont on parle sur le Net ;
j identifier 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 afin 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 5

Vous pouvez simplement placer un automate dtectant les mots-cls sensibles et bloquer
la moindre saisie suspecte :
j Le post-rejet avec message derreur.
j Ladresse IP dorigine en mode Ajout de commentaire sur une page
j 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.
j Ajout au fil du temps. Les script PHP ne permettent pas didentifier la date de mise
jour dune page car celle-ci est produite la demande. En revanche, un moteur
comme Google peut identifier lajout de texte une page en la comparant celle
prsente dans son cache. Il peut tracer la frquence de mise jour dune page et
identifier 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 confidentiels, 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
5 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 fil 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 5

</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
5 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 un pictogramme reprsentant le rseau social ( rcuprer sur le site web du rseau
social) ;
j 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

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
5 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, afin 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 modification en charge de :

164
Interactivit Web 2.0 et rfrencement automatis 5

j renforcer la cohrence de larticle affich ;


j rcuprer les variables denvironnement indispensables au bon fonctionnement des
diffrents scripts ;
j lancer les scripts permettant dafficher les diffrents posts dj existants ;
j proposer un lien pour saisir un post.

La fin de notre fichier 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.
j $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.
j 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
5 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 dafficher tous les post dj existants pour larticle en cours ;
j de proposer de commenter larticle en cours.
j 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.
j $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).
j <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 5

j <h1>Thme : . $expression_clef_strategique . </h1>. On renforce la


cohrence de la page en affichant entre balises h1 lexpression cl stratgique de
larticle.
j <a href="post_affiche_formulaire_saisie.php?id_article=. $id_article
.&url= . $url_de_zoom . " rel="nofollow">. Ce lien emmne linternaute vers
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).
j $post = PostHelper::findTousById_Article($id_article). Cette fonction renvoie
un tableau dobjets Post. Ce sont tous les Post existant dj pour cet $id_article.
j 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 fichier :


j Class PostHelper regroupe toutes les fonctions manipulant les objets Post.
j 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
5 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 5

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 dfini. 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
5 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 5

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 :
j http://www.cssdebutant.com/formulaire-css.html ;
j http://www.babylon-design.com/site/index.php/2007/09/24/192-boutons-extensibles-css-compatibles-
tous-navigateurs.

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
5 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 5

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 fichiers 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
5 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 5

<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
5 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 5

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

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


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

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


j aucun code HTML perturbant laffichage ;
j 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 filtr 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
5 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 figure 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 profiter de deux parties du Web
2.0 :
j les liens sociaux ;
j 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 5

Dautres aspects, dautres "jeux" incitant les internautes intervenir sur une page du site,
et ainsi contribuer son rfrencement, pourront tre mis en uvre :
j Notez ce contenu.
j 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, unifiez tout sur une page. Cela simplifie 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 linfini selon vos cas et
besoins particuliers.

179
6
6.1 Symptmes et causes. .................................. 182
6.2 Pages mal positionnes : dautres causes ............ 184
6.3 Flash et le rfrencement dans Google .............. 193
6.4 Rsum de ce chapitre ................................. 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.
6 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 pages absentes de lindex de Google ;
j 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 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.
j 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.
j Liste noire : toutes les pages du site sont inexistantes dans lindex de Google.
j Page absente mais dautres pages du site sont prsentes.
j 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. 6

j 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 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.
j Une optimisation trop agressive ou maladroite dclenchant un spamdexing et
entranant des pnalits de Google.
j 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.
j Avoir mis en uvre des techniques de triche, hors paidlinks, et stre fait prendre par
Google.
j .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 Un site web peut avoir une page daccueil avec un Page rank de 5. De nombreux
backlinks pointent vers lui.
j Toutes les pages internes possdent un Page rank confortable, de 2 4.
j Aucune pnalit nest prsente sur une page du site.
j 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 signifier 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
6 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
trafic 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.
j 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 6

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 remplacer ces menus droulants JavaScript, en gnral trs sympathiques et trs jolis,
par lquivalent en HTML par exemple ;
j 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
6 Pages absentes ou mal positionnes dans Google

Voici pourquoi :
j Les menus JavaScript sadressent exclusivement aux internautes humains. On peut
faire tout ce que lon veut. Aucun impact sur le rfrencement.
j 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.
j 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 Faire apparatre des lments aprs larborescence de liens : un pied de page avec
"mentions lgales " et autres rptitions, des lments de charte graphique, etc.
j crire ces liens dans une taille de police de 10 minimum.
j 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 linflation, cela fait 500
600 euros HT/mois daujourdhui.) Les frames diminuaient le besoin de bande passante.
j 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 6

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 afin dtre sr que Google interprte correctement les balises Hn.
Si vous redfinissez 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 dfini 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 dfinit une classe. Dans celle-ci, on va redfinir toutes les balises notre convenance,
graphique, mais aussi pour le rfrencement :
.maclasse h1 {

187
6 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. Afin
de ne pas abuser des balises H1 sur une page, on pourra utiliser bon escient cette
dfinition 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 dfinition 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 infimes, ngligeables.
Rsumons-nous : on a bien redfini 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 6

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 Elle bloque avec des informations sans intrt la page daccueil qui aurait mieux
faire.
j 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
6 Pages absentes ou mal positionnes dans Google

j 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 trafic. Le
site web dune PME lui ne peut se permettre un tel luxe pour un usage aussi inutile et
superflu.

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 afin 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 figure 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 6

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 Police de caractre ayant la mme couleur que le fond de page.
j Texte variant selon le profil 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.
j 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
6 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 fil 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 fiabiliser 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 fiction. 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 fiction, 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 ALT est une balise utilise par les terminaux pour mal voyant. Elle "traduit" le
contenu dune image.
j TITLE est une balise info bulle destination des voyants. Elle complte le visuel par
un texte saffichant quelques secondes ct de limage.
j 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 6

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 fichiers
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 fichiers 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 finaliser un logiciel capable
dindexer une image daprs son contenu, il serait maladroit de laisser une mme image
dans des fichiers 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 flouer 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 modifies, on
pourra greffer sans crainte une personnalisation des balises ALT et TITLE.

6.3 Flash et le rfrencement dans Google


La construction dune animation flash peut tre classe en deux parties distinctes :
j lanimation elle-mme ;
j la navigation entre animation, textes et autres objets.

La nuance est importante en rfrencement.


Il nest pas possible de rfrencer correctement un "site" en flash, cest--dire des
animations interconnectes entre elles via des liens flash. 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 flash :

193
6 Pages absentes ou mal positionnes dans Google

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

En revanche, des animations flash 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 finale, en considrant une animation flash 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 dfini et soumis pour chaque animation flash 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 un bloc de texte ;
j associ lanimation dun bloc.

194
Rsum de ce chapitre 6

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 flouer 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 trafic 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 fichier.
Pour finir, 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 .......... 198
7.2 Intrts des rsultats de recherche personnaliss .... 202
7.3 Arrive de Personalized Search Results .............. 204
7.4 Les informations personnelles utilisables .............. 205
7.5 Pourquoi Personalized search results ? ............... 208
7.6 Les limites imposes Google ........................ 210
7.7 Baisse ou hausse du trafic ............................. 213
7.8 Rfrenceur 2.0 ......................................... 215
7.9 Rsum de ce chapitre ................................. 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 simplifier la lecture. Mais
attention, actuellement, au moment de la rdaction de ces
lignes, le terme officiel en franais nest pas disponible.
7 Google personalized search results

7.1 Les rgles du positionnement vont changer


Des consultants SEO amricains prdisent la fin 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 rflexions 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 modifie 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 le contenu et son rfrencement dans le site lui-mme ;
j les backlinks internes ou externes.

Depuis de nombreuses annes, Google enrichissait petit petit ces deux approches par un
filtrage nomm personnalized search [results] en anglais. Lobjectif de ce filtrage 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 filtrage ont t simples ; elles concernaient essentiellement la
golocalisation.

198
Les rgles du positionnement vont changer 7

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
7 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 authentifie.
Google ne sen cache mme pas sur son blog officiel en sous-entendant que, connect ou
non, Google tentera didentifier 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 De nombreux parking en rgion parisienne sont proposs.
j 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.
j Hors la zone gographique, Google na aucune information pour personnaliser
davantage cette SERP. Lhumoriste Gustave Parking figure 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 modifient la SERP.
Le rsultat est plus faiblement personnalis :
j Comme auparavant, de nombreux parkings en rgion parisienne sont proposs.
j 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 figurent dans les premiers
rsultats. Plus loin, la SERP affiche des parking en France mais hors rgion
parisienne : Marseille et quelques autres grandes villes.
j 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 afin de personnaliser les SERP de chaque internaute.

200
Les rgles du positionnement vont changer 7

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

201
7 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 dfinitions 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 dfinition, 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 Luminaire. De nombreux autres internautes ont saisi lampe et ont cliqu sur des site
de luminaires.
j Magasin lampe. De nombreux internautes ont saisi la requte magasin lampe ou ont
cliqu sur des sites voquant les termes magasin et lampe.
j Magasin luminaire. Des internautes ont saisi lampe et ont cliqu sur des site de
magasin luminaire.

202
Intrts des rsultats de recherche personnaliss 7

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

203
7 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 fiable.

7.3 Arrive de Personalized Search Results


Google voque cette piste dvolution depuis plusieurs annes. Pour faire simple, fixons
cette date 2005. Elle correspond la publication de plusieurs communiqus par Google
sur ce thme.
Au fil 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 Des algorithmes "adroits" effectuent des calculs simples.
j Les calculs simples sont raliss sur dimmenses volumes de donnes.
j 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 fiables et continues. En effet, toute logique calculant un positionnement par
rapport :
j des mots-cls saisis dans Google ;
j 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

7.4 Les informations personnelles utilisables


Nous laissons de nombreux historiques dans notre sillage de navigation sur le Web :
j historique sur lutilisation de Google ;
j fichier log des possesseurs de cookies, notamment ceux des rgies publicitaires ;
j Google Chrome ;
j 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
fichiers 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-transparency-
in-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 signifie que de plus en plus souvent, les SERP seront
diffrentes dun internaute un autre.

Cela signifie-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
7 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 Gographiques fournies par votre adresse IP.
j Issues de vos rcentes recherches, les mots-cls utiliss dans vos requtes. Cette
dfinition propose par Google est intressante. Que signifie "rcent" ? Lgalement,
ce serait 18 mois maximum. Ce filtrage est actif que vous soyez ou non connect
votre compte Google. Traduction : Google authentifie personnellement chaque
internaute via cookie. Il vous authentifie chaque passage sur un des ses services.
Peut-tre garde-t-il en rserve la possibilit didentifier un internaute via son adresse
IP, mais cette mthode est thoriquement peu fiable 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 dauthentification qui peut tre
fiabilise grce des recoupements.
j 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.
j 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 confiance 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 7

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 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.
j Google ajoutera au fil 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.
j Limmense majorit des internautes laisseront faire.
j 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.
j 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
7 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 fidliss aux outils et au nom de Google. Les avantages sont multiples et
vidents :
j plus de revenus de AdWords ;
j plus de partenaires AdSense et donc de revenus lis ;
j plus de revenus publicitaires lis dautres outils Google ;
j 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 redfinir une mthode de mesure de performance du rfrenceur :
j Le navigateur ou loutil de mesure devront avoir limin tous les cookies de toute
nature.
j Google sait que les adresses IP ne sont pas fiables. Renouveler son adresse IP pour
ne pas tre suivi par Google nest nullement obligatoire pour fiabiliser une mesure
de positionnement et viter un filtre personnel autre que gographique.
j 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.
j Il faudra songer bloquer la personnalisation de la recherche dans Google/
Prfrences.

Il sera ncessaire de redfinir le travail du rfrenceur et de redfinir la mesure de la


qualit de son travail. Nous lvoquerons plus loin.

208
Pourquoi Personalized search results ? 7

La crise conomique
Lconomie est durement touche par la crise (subprime, Madoff et autres excentricits de
la finance amricaine). Face une possible baisse de revenus, la stratgie commande
dinnover pour conserver ses revenus. Deux gisements de bnfices 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 Une puissance de calcul gigantesque : Google dispose de centaines de milliers de
serveurs.
j 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.
j 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
7 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, AUTOreflex

210
Les limites imposes Google 7

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 figurer 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 Les mots-cls de ses requtes : ils dgagent des tendances.


j 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
7 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 filtrage 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 filtres aisment afin 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 flouer par le rfrenceur, Google doit dpenser des
ressources informatiques afin 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 trafic 7

7.7 Baisse ou hausse du trafic


Pas de panique : le trafic diminuera des internautes mal cibls. La personnalisation en
cartera une partie. Il pourrait y avoir dun autre ct une augmentation de trafic 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 trafic 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 trafic quand Google mettra en service les rsultats
de recherches personnaliss.

Cette modification majeure dans les algorithmes de SERP peut avoir des effets trs
bnfiques en trafic sur un site web :
j dont le contenu et la valeur ajoute sont rels ;
j qui prsente pas ou peu de duplicate contents ;
j qui a une organisation apparente trs hirarchise pour Google ;
j qui possde une stratgie de rfrencement centralise et cible (landing pages,
expression cl) ;
j qui met en uvre une politique de rfrencement concentre sur les mots/expressions
cls et leurs multiples dclinaisons ;
j 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
7 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 identifier, trier, classer et cibler hirarchiquement les multiples dclinaisons
et variantes dune expression cl sur sa landing page :
j lampe dcoration orientale ;
j lampe dcoration marocaine ;
j lampe de salon ;
j lampe en cuir de chvre ;
j lampe mtallique 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 trafic.
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 fournir des SERP aux internautes sans historique ;
j disposer dune base dindexation sur laquelle appliquer des filtres de
personnalisation des rsultats de recherche.

Un site mal conu aura des statistiques potentiellement incomprhensibles et difficiles


interprter. La personnalisation pourra avoir un effet dvastateur sur le trafic 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 flash , 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 7

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 fin fond de lindex. (Mais on peut avoir du Page rank
malgr tout si on a des backlinks externes.)
j 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 afin 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.
j Les historiques propres chaque internaute ayant un compte Google et ayant t
authentifi par Google via un cookie.

215
7 Google personalized search results

Pour simplifier, 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 7

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
7 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 7

KeywordTool nous donne de prcieuses indications mme si elles ne sont pas assez
prcises :
j Nous avons le trafic des recherches sur le mot-cl lampe, sur ses dclinaisons.
j Nous obtenons aussi des mots-cls valuer selon Google cause des associations
lies lampe et ralises par les internautes lors de leurs recherches.
j 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
7 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 afin 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 finale 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 trafic sur une
expression ou mot-cl mal rfrencs. Il appartient au rfrenceur de les dtecter, de
comparer le trafic potentiel existant (on vient de voir quil y a des outils Google pour
cela) au trafic 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 trafic de qualit, personnalisation des rsultats de
recherche ou non. Certes, il ne pourra probablement pas calculer toutes les dclinaisons,
mais il pourra en identifier suffisamment pour doper le trafic 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 7

Nous avons vu quen utilisant la thorie des graphes puis les notions dobjets et de
proprits, on a dfini 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 dfini, 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 requte : les mots-cls saisis dans une requte ;
j URL visite : une URL clique dans une SERP Google elle-mme renvoye vers un
compte Google ayant envoy une requte ;
j 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 identifiant requte ;
j compte Google auteur de la requte ;
j date et heure, minute, seconde ;
j mots-cls.

221
7 Google personalized search results

URL visites :
j identifiant requte lorigine de la SERP do lURL a t clique ;
j date et heure, minute, seconde o le clic a t fait ;
j 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 profil de
linternaute seront organises pour tre compatibles avec le fonctionnement du
thsaurus.
j 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 profil, 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 Artificielle), pour mieux comprendre les contenus visits par
linternaute et donc mieux classer et catgoriser son profil en respectant le systme
du thsaurus.

222
Rfrenceur 2.0 7

j 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 modifie
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
7 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 7

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 figure, 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
7 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
didentifier 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 7

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 afin 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 afin dautomatiser les tches
fastidieuses mais indispensables ncessaires son travail. Plus des mthodes fiables 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 | signifie : ou exclusif, soit un terme soit lautre, jamais les deux en mme temps.
j || signifie : ou inclusif, soit un terme soit lautre, soit les deux en mme temps.

227
7 Google personalized search results

Cette ligne exprime en factorisation :


j Le mot-cl central stratgique est : lampe. Il doit apparatre dans un maximum de
critres de page : TITLE, Meta Description, ALT, H1, etc.
j 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.
j 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.
j Puis on peut combiner lampe dcoration avec soit orientale, soit marocaine.
j Puis on peut combiner ces expressions cls avec soit maison, soit intrieur.
j Et enfin, 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 reconstituer, mme approximativement, une expression cl gnre par Google lors
de la personnalisation de rsultats de recherche ;
j puis corrler avec le taux de transformation afin didentifier 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 7

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 trafic par rapport aux informations issues
des outils de Google ?
j 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.
j Davoir valu pour une expression cl, via des simulations dhistoriques, le
comportement de Google.

On aurait pour une landing page :


j Un nombre limit de mots-cls (lampe, dcoration, orientale, etc.) pouvant
composer des centaines de combinaisons dexpressions cls.
j Ces mots-cls sont infrieurs 15 voire moins et sont parfaitement identifis. Ils sont
prsents dans une table MySQL. Normalement, si on suit ce qui a t expliqu
auparavant, on a pu identifier certaines des expressions cls utilises par Google en
personnalisation et elles sont intgres dans la factorisation de mots-cls de la
landing page.
j Moyennant un bon usage de Google Analytics ou mieux, un petit programme, on
peut identifier 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).
j On a pu exporter dans une table MySQL (chaque mois, chaque trimestre via un
fichier .csv par exemple) depuis un outil Google comme keywordTool le trafic 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.
j 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
7 Google personalized search results

j Le taux de transformation (une transformation signifie 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 fichier .txt puis dimporter ce fichier, la nuit par batch, dans une
table MySQL afin de pouvoir identifier si tel internaute est pass par cette URL de
remerciement ou non.
j Les mots-cls principaux de la page ou mme la factorisation retenue (on peut
ajouter un champ la table article pour prvoir cette possibilit).
j Le trafic existant sur ces expressions cls dans Google, en large et en respect strict
de lexpression cl.
j 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 fidliser 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 7

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 ......................................... 234
8.2 Conseils, astuces et dpannages ..................... 236
8.3 Rsultats de recherche personnaliss ................. 237
8.4 Normes et manuels ..................................... 237
8.5 URL de codes sources .................................. 238
Annexe
Webographie

V 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 :
j rfrencement ;
j forum sur le web marketing dont le rfrencement
naturel nest quune des composantes ;
j programmation web ;
j outils divers facilitant la mise au point de programmes.
vous de jouer !
8 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.
j 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 trafic. Rappelez-vous,
le filtrage 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 trafic
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 http://www.hyper-lien.com/articles/ip-site.php est un petit outil en ligne qui vous donne


directement ladresse IP dun site web.
j https://adwords.google.fr/select/KeywordToolExternal?defaultView=3. Ce logiciel en ligne de
Google vous permettra dvaluer des expressions cls. Cest un des outils indispen-
sables pour auditer des mots et expressions cls.
j www.google.com/webmasters/tools/?hl=fr. Google webmasters tools donne accs au web-
mestre de nombreux outils facilitant le travail de rfrencement.
j 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 8

j http://noscript.net/. Add on pour Firefox afin de scuriser votre navigateur en limitant


la consommation de ressources par les flash mal cods et trop gourmands en
ressources de votre processeur.
j http://www.wampserver.com/. Lenvironnement de dveloppement utilis : Windows, Apa-
che, 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 modification 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 fichier .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 afin de prendre date avec les moteurs de recherche, dobtenir un "profilage" 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 :
j 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 mo-
teur franais Exalead.

235
8 Annexe Webographie

8.2 Conseils, astuces et dpannages


j http://www.webrankinfo.com/forums/index.php. Forum sur le rfrencement o interviennent
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.
j 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.
j 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.
j http://www.forum-marketing.com/index.php : un dernier forum francophone sur le rfren-
cement.
j 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-sur-
le-duplicate-content-307.
j 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 afin de
limiter laccs .htpasswd Apache et au protocole FTP ou autre retenu pour mettre jour le fichier.
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 8

Pour obtenir des pages sur la programmation dans un .htaccess pour de lURL rewriting
ou de la redirection par exemple, "googlez" tutorial .htaccess.
j Le blog officiel de Google est : http://googleblog.blogspot.com/.
j Des informations utiles pour mieux comprendre comment optimiser vos snippet et
balises sur vos pages : http://googlewebmastercentral.blogspot.com/2007/12/answering-more-
popular-picks-meta-tags.html.

8.3 Rsultats de recherche personnaliss


Le blog officiel de Google prsente depuis fin 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 filtrerez 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 Dfinition des cookies : la RFC 2109 : http://www.ietf.org/rfc/rfc2109.txt.
j Sa remplaante, la RFC 2965 : http://tools.ietf.org/html/rfc2965.

Les codeurs utilisant flash trouveront de lintrt dans ces deux URL :
j http://code.google.com/p/swfobject/wiki/documentation ou comment implmenter une anima-
tion flash en lui donnant un texte alternatif accessible aux bots de Google (et des
autres moteurs).
j 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
8 Annexe Webographie

branche des mathmatiques devrait sy plonger pour mieux apprhender le gnie logiciel
et Google, bien sr.
Voici quelques URL sur le sujet :
j 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/.

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 Remi Aubert & Alan Boydell ;
j Remi : www.remiaubert.com ;
j Alan : www.analytics.fr.

Le code source dorigine servait traquer le trafic des bots sur un site web via Google
Analytics. Ce code source a t modifi 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 figurait 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 La liste des bots utilise dans notre exemple provient de : BBclone www.bbclone.de ainsi
que le script patterns.php.
j 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 fichier
tlchargeable.

238
URL de codes sources 8

Feuille de style
Certaines parties des feuilles de style de notre exemple ont t drives dexemples ou
dinformations techniques exposs dans ces pages :
j http://www.cssdebutant.com/formulaire-css.html ;
j http://www.babylon-design.com/site/index.php/2007/09/24/192-boutons-extensibles-css-compatibles-
tous-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 http://justaddme.com/.
j Lexemple utilise un code source issu de ce site qui permet de disposer de
statistiques sur les clics des usagers : http://www.addthis.com/.
j 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
dfinition .................................................................................................. 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 ..................................................................................... 237


Nuage de liens ............... 14, 32-33, 41, 55, 94, 106 108, 113, 120, 124, 129
automatiser ............................................................................................... 107
trop semblables ........................................................................................ 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
flux ........................................................................................................... 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