Skip to content

Kévin Dunglas

Founder of Les-Tilleuls.coop (worker-owned cooperative). Creator of API Platform, FrankenPHP, Mercure.rocks, Vulcain.rocks and of some Symfony components.

Menu
  • Talks
  • Resume
  • Sponsor me
  • Contact
Menu

De jolies URLs pour optimiser votre référencement

Posted on March 9, 2008July 24, 2008 by Kévin Dunglas

Je vais vous présenter ici une technique de ré-écriture d’URL en PHP. Nous l’appellerons URL Rewriting via PATH_INFO. Celle-ci est un peu particulière, elle est indépendante d’Apache. Elle fonctionnera même si votre hébergeur désactive le ModRewrite ou si vous utilisez un serveur web alternatif.

Prenons une page imaginaire nommée http://monsite.com/recette.php?cat=tomate&id=2 et intitulée Mon plat secret qui détaillera notre succulente recette de pâtes à la tomate.
L’URL que nous souhaitons obtenir est http://monsite.com/recette/tomate/2-plat-secret.

Mais un exemple vaut mieux qu’un long discours… Rendez-vous sur le catalogue de l’Âne qui butine pour une démonstration.

Cette adresse présente trois avantages face à la première :

  • Elle ne contient pas de paramètres (?cat=tomate&id=2), et c’est tant mieux. Les pages accessibles de cette manières, si elles ne sont pas tout simplement ignorées, ne seront que faiblement pris en compte par les moteurs de recherche.
  • Des mots-clefs apparaissent dans l’adresse (plat-secret). Ils peuvent être simplement générés à partir du titre de la page (peut-être y reviendront nous dans un prochain article) et auront un puissant impact sur votre positionnement.
  • L’extension de la page n’apparait plus. Vos adresses n’en seront que plus simples à mémoriser et les pirates de découvrirons pas du premier coup d’œil quelle technologie vous utilisez (ici PHP).

Ceci est un exemple de code que vous allons ensuite modifier :


<?php
/* Inclusion imaginaire... */
require ('init.php');

/* Requête dans la base de donnée et affichage... */
displayArticle ($_GET['cat'], $_GET['id']);

(Note : même en conservant l’extension la technique présentée ci-dessous fonctionnera.)Première opération, supprimer l’extension de la page. Si vous utilisez la configuration par défaut d’Apache c’est très facile, il n’y a rien à faire ! Si http://monsite.com/recette?cat=tomate&id=2 ne fonctionne pas il va falloir activer l’option MultiViews d’Apache. Il vous faudra ajouter à votre fichier .htaccess :
Options +MultiViews
Entrons dans le vif du sujet, la ré-écriture d’URL en PHP ! Pour ce faire nous utiliserons la variable d’environnement CGI nommée PATH_INFO. Cette variable contient tout ce qui est contenu dans l’adresse après le nom du fichier, y compris le “/” initial. Avec notre adresse http://monsite.com/recette.php/tomate/2-plat-secret, PATH_INFO contiendra /2-plat-secret. Nous y accèderons via le tableau super-global $_SERVER et en extrairons l’identifiant qui est séparé des mots clefs par le caractère “-“. Et maintenant, le code !


<?php
/* Inclusion imaginaire... */
require ('init.php');

/* On vérifie que l'adresse se poursuit après le nom du fichier */
if (array_key_exists ('PATH_INFO', $_SERVER)) {
/* On sépare les paramètres (à chaque occurence d'un slash) */
$para = explode ('/', $_SERVER['PATH_INFO']);

/* La catégorie est contenue dans la deuxième case du tableau $para. N'oublions pas que la première case ($para[0]) est vide à cause du slash initial */
$cat = $para[1];

/* On sépare l'identifiant des mots-clefs */
$p = explode ('-', $para[2]);

/* Ci-dessous l'identifiant */
$id = $p[0];

/* Et maintenant les mots-clefs (aucune utilité ici) */
$keywords = $p[1];

/* Requête dans la base de donnée et affichage... */
displayArticle (cat, $id);

Et nous voici avec notre jolie URL qui se référencera très bien dans les moteurs de recherche !

Related posts:

  1. Introduction au référencement
  2. Des jolies URL en PHP sans mod_rewrite
  3. FeedBurner avec votre nom de domaine !
  4. Un thème Prestashop HTML5 optimisé pour le référencement avec Rich Snippets

2 thoughts on “De jolies URLs pour optimiser votre référencement”

  1. Flunch says:
    March 11, 2008 at 11:29 am

    Attention elle n’est pas “indépendante d’apache”
    La preuve sous IIS => 404

    Reply
  2. Kévin Dunglas says:
    March 12, 2008 at 10:34 am

    Il est possible de configurer IIS pour qu’il ai un comportement similaire à Apache. Pour ne pas avoir besoin de l’extension des fichiers il faut activer l’option “Remove File Extension/Redirect File” du menu “Application Mapping”.

    La technique du PATH_INFO doit fonctionner avec IIS comme avec n’importe quel autre serveur capable d’exécuter des CGI. Il faut veiller que l’option “AllowPathInfoForScriptMappings” est utilisée. Pour plus d’infos : http://support.microsoft.com/kb/q184320/

    Reply

Leave a ReplyCancel reply

Social

  • Bluesky
  • GitHub
  • LinkedIn
  • Mastodon
  • X
  • YouTube

Links

  • API Platform
  • FrankenPHP
  • Les-Tilleuls.coop
  • Mercure.rocks
  • Vulcain.rocks

Subscribe to this blog

Top Posts & Pages

  • JSON Columns and Doctrine DBAL 3 Upgrade
  • Securely Access Private Git Repositories and Composer Packages in Docker Builds
  • Preventing CORS Preflight Requests Using Content Negotiation
  • FrankenPHP: The Modern Php App Server, written in Go
  • Symfony's New Native Docker Support (Symfony World)
  • Develop Faster With FrankenPHP
  • How to debug Xdebug... or any other weird bug in PHP
  • HTTP compression in PHP (new Symfony AssetMapper feature)
  • PHP and Symfony Apps As Standalone Binaries
  • Generate a Symfony password hash from the command line

Tags

Apache API API Platform Buzz Caddy Docker Doctrine FrankenPHP Go Google GraphQL HTTP/2 Hydra hypermedia Hébergement Javascript JSON-LD Kubernetes La Coopérative des Tilleuls Les-Tilleuls.coop Lille Linux Mac Mercure Mercure.rocks Messagerie Instantanée MySQL performance PHP Punk Rock Python React REST Rock'n'Roll Schema.org Security SEO SEO Symfony Symfony Live Sécurité Ubuntu Web 2.0 webperf XML

Archives

Categories

  • DevOps (84)
    • Ubuntu (68)
  • Go (17)
  • JavaScript (46)
  • Mercure (7)
  • Opinions (91)
  • PHP (170)
    • API Platform (77)
    • FrankenPHP (9)
    • Laravel (1)
    • Symfony (97)
    • Wordpress (6)
  • Python (14)
  • Security (15)
  • SEO (25)
  • Talks (46)
© 2025 Kévin Dunglas | Powered by Minimalist Blog WordPress Theme