Portrait Olivier Duffez

Olivier Duffez

Créateur de WebRankInfo,
consultant en référencement

Comment référencer des pages en PHP

Utiliser PHP sur son site pose-t-il un problème pour le référencement ? Cet article explique que ce n’est pas le cas et donne quelques conseils associés.

Le PHP peut-il être néfaste pour le référencement ?

Dans la plupart des cas, cela ne gêne absolument pas. L’extension du nom de fichier n’a en général aucune influence (GoogleBot par exemple ne fait aucune différence entre un fichier .htm, .php ou .asp). Ce qui compte, c’est que la page respecte la norme HTML.

Ce qui peut éventuellement gêner, c’est l’utilisation de pages dynamiques avec de nombreux paramètres dans l’URL, comme par exemple :

article.php?id=12&p=3&t=10&style=p

Dans ce cas il faut mettre en place la technique de l’URL rewriting, décrite en détails au travers de plusieurs articles sur ce site.

Ce qui bloque très souvent l’indexation, c’est l’utilisation de variables de session PHP (lire mon article « Les sessions PHP et le référencement« ).

Enfin, dans certains cas extrêmes, si le serveur gérant le PHP chez votre hébergeur est surchargé (hébergeurs gratuits par exemple), vos pages risquent de mettre du temps à s’afficher, et au pire de ne pas être accessibles du tout… Si le robot passe à ce moment, ce n’est pas bon ! Mieux vaut opter pour un bon hébergement web payant, d’autant plus que c’est maintenant à la portée de tous les budgets.

Le principe des pages dynamiques en PHP

Schéma très simplifié du PHP pour les débutants
Schéma très simplifié d’une requête d’une page PHP à un serveur

Le PHP est utile pour ajouter de la programmation dans les pages. Dans certains cas, il est possible d’utiliser aussi bien un langage serveur (PHP) qu’un langage client (JavaScript), par exemple pour insérer la date dans une page.

Pour interagir avec une base de données, il faut que le script soit sur le serveur.
Pour réagir aux actions de l’utilisateur (par exemple lorsque le curseur de la souris passe au-dessus d’une image), il faut utiliser un script sur le poste client.

Quoi qu’il en soit, aussi bien pour un internaute que pour un robot d’indexation comme GoogleBot, la page PHP reçue du serveur est une page contenant du code HTML, exactement comme une page statique ayant par exemple l’extension .html.

D’ailleurs il n’est même pas possible de savoir si la page a été interprétée par un serveur PHP. Le code PHP n’est plus visible par les internautes. Les pages PHP s’écrivent donc comme des pages HTML, avec un bon titre de page, des bonnes balises META, etc.

Les identifiants de sessions dans les URL : facteur bloquant pour le référencement

C’est le cas des variables de session PHP qui empêchent l’indexation par les moteurs de recherche (sauf rares exceptions). La raison est simple et s’explique par le principe des sessions : un identifiant de session est attribué automatiquement (par tirage au sort) à chaque visiteur qui arrive sur un site utilisant les sessions (par exemple les sites de commerce en ligne). Cet identifiant va l’accompagner pendant toute sa visite sur le site, ce qui permettra au serveur de gérer par exemple son panier d’achat.

Si cet identifiant de session est transmis dans l’URL (sous forme de variable id ou sessionid…), alors à chaque fois qu’un robot d’indexation tel GoogleBot viendra visiter un site, toutes les pages auront une nouvelle URL. Plus précisément, une même page aura à chaque visite une nouvelle URL.

Si GoogleBot indexait ce genre de pages, il pourrait saturer son index rien qu’avec un seul site !

La solution est soit de se passer de sessions, soit de désactiver les sessions quand le visiteur est en fait un robot d’indexation de moteur de recherche (c’est une forme de cloaking acceptée par les moteurs).

Voici un exemple de code PHP de détection de robot (à vous de l’adapter, il est très simplifié) :

// ----------------------------------------------------------------
// renvoie true si le visiteur est un robot de moteur de recherche
// ----------------------------------------------------------------
function isRobot()
{
  $robots = array("Googlebot", "bingbot", "VoilaBot");
  $is_robot = false;
  foreach($robots as $robot)
  {
    if (eregi($robot, $_SERVER["HTTP_USER_AGENT"]))
    {
      $is_robot = true;
      break;
    }
  }
  return $is_robot;
}

Ce script se base sur une correspondance partielle du UserAgent, à vous de l’adapter selon vos besoins.

Remarque : sur vos pages dynamiques, n’oubliez pas de créer des URL propres avec l’URL Rewriting !

Gestion du header HTTP en langage PHP

Chaque page au format HTML comprend un entête, transmis par le serveur juste avant la page elle-même. Cet entête comprend entre autres un code HTTP indiquant le statut de la page. Par exemple si la page est introuvable, l’entête indiquera le code 404 et le navigateur affichera un message d’erreur adapté. Si la page a été définitivement déplacée, le code HTTP doit être 301.

Utilisation de la fonction header() de PHP

Pour gérer soi-même ce code, par exemple pour indiquer à GoogleBot ou aux autres robots qu’une page a été définitivement déplacée ailleurs sur le site (ou sur un autre site), on peut utiliser la fonction header() du langage PHP. C’est très simple ! Par exemple si votre site a déménagé et que vous souhaitez indiquer sur l’ancienne page d’accueil l’adresse de la nouvelle, il suffit d’écrire dans le fichier situé à l’ancienne adresse :

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.nouveausite.com/");
exit;
?>

Attention !

2 remarques importantes :

  • La fonction header() doit être utilisée avant tout envoi de caractère vers la page générée (l’entête doit être transmis en premier, avant la page elle-même). Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui génèreront un affichage avant que la fonction header() ne soit appelée.
  • Par défaut, la redirection effectuée par la fonction header('location: ...") est une redirection temporaire (302). Il faut absolument ajouter une précision sur le type de code demandé (301 dans cet exemple, car c’est en général ce qu’il faut pour le référencement).

Voir aussi

Liens externes :

Cet article vous a-t-il plu ?

Cliquez pour voter !

Laisser un commentaire

Remarques :

  • Si vous souhaitez poser une question ou détailler un problème technique, il ne faut pas utiliser le formulaire ci-dessous qui est réservé aux avis. Posez votre question directement dans le forum Gmail de WebRankInfo. L'inscription est gratuite et immédiate.

  • En postant un avis, vous acceptez les CGU du site WebRankInfo. Si votre avis ne respecte pas ces règles, il pourra être refusé. Si vous indiquez votre adresse email, vous serez informé dès que votre avis aura été validé (ou refusé...) ; votre adresse ne sera pas utilisée pour vous envoyer des mailings et ne sera pas revendue ou cédée à des tiers.

Un Commentaire

Jack

Bonjour,
Je suis par d’accord sur le fait que les sites dynamiques ne gênent pas… Si pour moi il me gênent.
Exemple : Une majorité de sites de communiqué de presse n’ont pas accepté un lien php…

Bref je trouve plus de diffucltés pour référencer mon site dynamique.
Je vais voir du coté URL rewriting.
Bonne journée.

Répondre