Voilà déjà quelques temps que j’ai réussi à réécrire l’url des pages de mon blog Dotclear. Auparavant une page billet avait un url ressemblant à index.php?post/2009/07/16/titre-du-billet.html
, et maintenant, elles sont de la forme : /post/2009/titre-du-billet.html
. C’est quand même mieux ! On pourrait optimiser encore, mais moi ça me suffit.
Il y a deux choses à faire pour modifier la réécriture des urls sur son blog.
Format d’url des nouveaux billets
Dans les paramètres du blog (Tableau de bord > Paramètres du blog), il est possible de modifier le format d’url des nouveaux billets. Par exemple : Année/Mois/Jour/Titre ou Année/Titre.
Mais il est aussi possible de modifier ça « à la main » (donc avec plus de possibilité) dans about:config (Extensions > about:config).
PATH_INFO ou QUERY_STRING
Pour faire disparaitre le index.php
dans l’url, il suffit ensuite de suivre les directives d’un tutoriel à ce sujet sur le site (assez moche ^^) de Victor Brito : tutoriel réécriture d’url pour Dotclear Voici en gros les étapes à suivre :
- Modifier dans les paramètres du blog (Tableau de bord > Paramètres du blog) l’url du blog (on enlève index.php/ ou index.php?), et méthode de lecture d’url (PATH_INFO par exemple)
- Modifier le fichier inc/config.php en décommentant, commentant les lignes indiquées (suivre ce que disent les commentaires du fichier)
- Modifier ou créer un fichier.htaccess (à la racine du blog) et lui ajouter le code suivant, en l’adaptant :
#DotClear 2 nécessitant PHP 5, on déclare que les fichiers .php doivent être interprétés comme du PHP 5 AddType x-mapp-php5 .php #Si cela ne fonctionne pas, commenter la ligne au dessus et dé-commenter les 2 suivantes #AddHandler x-httpd-php5 .php #AddType application/x-httpd-php5 .php RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) /dotclear/index.php/$1 RewriteRule ^index.php$ dotclear/index.php/
Et voilà, votre blog sait maintenant gérer de beaux urls !
Un peu de SEO
Pour éviter de perdre tout le référencement des anciens urls, il peut être de bon ton d’utiliser une redirection 301. Une redirection 301 précise à Google qu’une page a changer d’url de manière permanente. (302 c’est pour un changement d’url de manière temporaire) A utiliser avec parcimonie, mais à utiliser quand même. Pour cela, il suffit d’ajouter une règle de réécriture dans le .htaccess. Par exemple, pour rediriger la page ancienne-page.html vers nouvelle-page.html, on utilise :
RewriteRule ^ancienne-page.html$ nouvelle-page.html [R=301]
Dans notre cas, on pourrait donc utiliser une réécriture automatique, du style :
RewriteRule ^index.php\?(.*)$ $1 [R=301]
Pour tester, il suffit d’aller à l’ancienne url et de voir si on est redirigé.