La réécriture d'URL


Dans cet article nous allons voir les deux manières de personnaliser vos URLs dans le CMS Automne, pour proposer des URLs plus lisibles à vos visiteurs. La réécriture d’URL est généralement considérée comme une bonne pratique pour le référencement naturel, du moment que vous ne cherchez uniquement pas à remplir vos URLs de mots-clefs. À l’instar d’un fil d’ariane, les URLs doivent avant tout aider vos utilisateurs à comprendre où ils se trouvent.

Automne intègre nativement un module pour la gestion d’alias, qui vous permet depuis la version 4.2 de réécrire les URLs de pages — exceptées pour celles qui font des requêtes. Pour ces pages spécifiques, il faudra faire appel au module de réécriture du serveur web Apache.

Réécrire vos URLs de page avec le module Alias

Les alias sont des redirections de type interne ou externe, qui peuvent être créés à partir des propriétés de page ou de l’administration du module Alias. Ces redirections sont par défaut temporaires (de type 302) mais peuvent être permanentes (de type 301). Vous pouvez choisir d’afficher un alias de redirection permanente comme URL par défaut.

Le module alias vous permet donc de réécrire les URLs de vos pages statiques de façon permanente dans Automne sans avoir à faire appel à la réécriture d’URL au niveau du serveur Apache.

Par défaut Automne génère des URLs du type http://domaine.tld/website/ID-titre-de-page.php, grâce aux alias vous avez la possibilité de créer les URLs de votre choix comme par exemple http://domaine.tld/contact. C’est déjà mieux :)

Vous pouvez gérer les alias directement via les propriétés de page. Pour créer un alias, cliquez sur Nouveau. Vous pouvez alors choisir le libellé de l’alias, le type, les domaines concernés et si vous souhaitez que l’alias deviennent l’adresse par défaut.

Gestion des alias dans Automne

Le module vous laisse la possibilité de gérer une vraie arborescence d'alias, ainsi vous pouvez créer des URLs de la forme :

  • http://domain.tld/alias/sous-alias
  • http://domain.tld/alias/un-autre-sous-alias

Les possibilités sont nombreuses, le système est suffisamment souple pour vous permettre d'attribuer plusieurs alias à une même page ou de créer un alias valable pour plusieurs domaines.

Utiliser le mod_rewrite d'Apache

Ce module est donc très pratique pour les pages dites statiques, mais qu'en est-il des pages dynamiques, celles qui prennent des variables en paramètres pour effectuer des requêtes comme par exemple losqu'il faut afficher un article de blog ?

Comme pour beaucoup d'autres CMS, il va falloir faire appel dans ce cas au module de réécriture d'URL d'Apache. Ici on s'adresse déjà à des utilisateurs avertis, qui savent écrire des expressions régulières.

Tout d'abord, il va nous falloir décider de comment nous voulons réécrire nos URLs. Prenons l'exemple du blog d'Automne composé d'une seul page qui prend en paramètre le numéro de billet à afficher : http://blog.automne-cms.org/?billet=3063

Nous allons utiliser la réécriture d'URL pour la transformer ainsi : http://blog.automne-cms.org/2012/04/17/automne-4-2-1/3063

Ici nous insérons donc la date au format anglais (pour garder l'année en premier), le titre du billet de blog, et enfin l'identifiant du billet en fin d'URL, qu'il nous faut garder pour qu'Automne puisse afficher le billet.

Attention si vous voulez gérer des urls avec du mod_rewrite il faut bien penser à le faire partout : flux RSS, plugins polymod,  URL canonical, module sitemap, etc.

Commençons par remplacer dans nos rangées tous les liens générés côté client, dans l'administration d'Automne nous devons garder les liens par défaut :

<!--  Dans l’administration Automne -->
<atm-admin>
  <a href="{page:self:url}?billet={Article:id}">{Article:Titre:value}</a>
</atm-admin>
<!-- Sur le site public -->
<!?php 
  $titre = htmlspecialchars_decode(trim({Article:Titre:value}),ENT_QUOTES);
?>
<atm-noadmin>
  <a href="{page:self:url}{Article:formatedDateStart|Y/m/d}/{helper:io::sanitizeURLString:{var:string:titre}}/{Article:id}">{Article:Titre:value}</a>
</atm-noadmin>

Nous sommes obligés de nettoyer d'abord le titre du billet à l'aide de plusieurs fonctions PHP avant de construire notre nouvelle URL par défaut.

Il nous faut appliquer le même type de modification dans le flux RSS des billets au niveau de la balise atm-rss-item-url :

<?php
$titre = htmlspecialchars_decode(trim({Article:Titre:value}),ENT_QUOTES);
$titre = io::sanitizeURLString($titre);
?>
<atm-rss-item-url>{page:5:url}{Article:formatedDateStart|Y/m/d}/{helper:io::sanitizeURLString:{var:string:titre}}/{Article:id}</atm-rss-item-url>

Une fois toutes les URLs remplacées, il faut demander au serveur Apache d'interpréter ces URLs sous peine de nous retrouver avec des erreurs de type 404. Les règles de réécriture se font dans le fichier .htaccess à la racine du site web. Pour cela vous devez donc disposer d'un accès à votre serveur et des droits d'écriture sur ce fichier.

Vous devez être bien sûrs de ce que vous faîtes car la syntaxe de ce fichier doit être correcte pour pouvoir être interprétée par Apache.

Voici un exemple pour les réecritures mises en place sur le blog d'Automne :

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^[\d]{4}/[\d]{2}/[\d]{2}.*/([0-9]+)$ /web/blog/index.php?billet=$1 [L,QSA]
  RewriteRule ^auteur/.*/([0-9]+)$ /web/blog/index.php?auteur=$1 [L,QSA]
</IfModule>

Ici la règle de réécriture pour les billets, fait correspondre à l'URL d'affichage d'un billet de blog, une réecriture composée de la date, de n'importe quelle chaîne de caractères et qui se termine par un chiffre, l'identifiant du billet dans notre cas.

L'exemple contient aussi une autre régle de réécriture pour les URLs qui affiche les articles d'un auteur donné.

La réécriture d'URL de page dynamiques dans Automne n'est pas native, il y aura donc des cas où cela demandera pas mal de travail, n'allez pas réécrire systématiquement toutes vos URLs de ce type.

Sur le même sujet voir aussi le billet d'Automne4you qui expose son expérience avec le module alias.

Nous vous conseillons de commencer par réécrire les URLs de vos pages statiques grâce au module alias, le système est simple et accessible à tous. Couplé au module plans des sites, il vous permet de soumettre des URLs plus lisibles pour vos utilisateurs et pour les moteurs de recherche (voir le sitemap des articles de ce blog). Nous aborderons le fonctionnement du module sitemap dans un prochain billet.