Un premier billet pour la renaissance de Libre cours en 2007.
Désolé pour ceux qui trouveraient ce billet obscur, on nage ici dans la technique, parce que j'ai migré tout mon blog à la nouvelle mouture de Dotclear (Dotclear 2, pas encore de version officiellement stable), et les urls sont légèrement modifiés.
Avertissement sur la migration à DC2
Je vous invite à lire le premier avertissement de la doc de Dotclear 2. Passer de 1.2.x à 2 est une migration, non pas une mise à jour. Ça nécessite
- l'installation d'un dotclear 2 tout neuf
- l'exportation de votre dotclear 1.2.x ancien (si vous utilisez le plugin des tags, vous devez installer un plugin d'exportation spécial, et non celui spécifié dans la doc de Dotclear 2, vous le trouverez ici. Donc, on exporte tout simplement tout le contenu dans un fichier qu'on réimportera ensuite.
- l'importation de votre ancien dotclear dans votre nouveau à l'aide du plugin import/export déjà installé (le plugin compris dans la version beta5 va vous permettre d'importer les tags si vous les avez exporté avec le plugin dont je viens de vous parler).
Si vous n'êtes pas trop perdus, vous pouvez poursuivre la lecture. Sinon, lisez un autre de mes billets, y'en aura plus souvent (c'est presque une résolution !).
Pourquoi les beaux urls ?
Après quelques recherches infructueuses, voici comment faire pour obtenir de "beaux urls", soit des urls ne contenant pas le index.php. Il existe déjà des procédures concernant le fait de faire cela lorsque Dotclear est installé à la racine du site, mais pas dans un dossier, comme c'est le cas ici.
En résumé, j'ai dû fouiller à différents endroits pour trouver comment passer d'urls qui étaient en "querystring" (de type index.php?) à des urls qui maintenant ne sont plus comme ça. J'aurais pu garder cela comme c'était, mais c'est nettement plus joli maintenant. Le défi était que tous les anciens urls de mes billets soient de nouveaux accessibles vers les nouveaux urls automatiquement.
Comme j'ai cherché assez longtemps, je vous laisse ma recette, à tout hasard. Ça aidera au moins Gilles qui a les mêmes urls que moi.
Utilisation du .htaccess
On doit placer dans le dossier où votre blogue est installé (disons un dossier nommé blog, à la racine de votre site), un fichier .htaccess . Évidemment, tout cela est conditionnel au fait que votre hébergeur accepte les .htaccess. Voici à quoi ressemble mon .htaccess
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) /blog/index.php/$1 RewriteRule ^index.php$ blog/index.php/ RewriteCond %{QUERY_STRING} ^type=co$ RewriteRule ^rss\.php$ blog/feed/rss2/comments [NC,L,R=301] RewriteRule ^atom\.php$ blog/feed/atom/comments [NC,L,R=301] RewriteRule ^atom\.php blog/feed/atom [NC,L,R=301] RewriteRule ^rss\.php blog/feed/rss2 [NC,L,R=301] # Pour permettre de reecrire index.php?/an/mois/jour/numero-titre-du-billet pour dc2 RewriteCond %{QUERY_STRING} ^([0-9]{4}/[0-9]{2}/[0-9]{2}/[0-9]+.*)$ RewriteRule ^index.php http://benoitst-andre.net/blog/post/%1? [R,L] # Pour reecrire les categories de index.php?Ma-Categorie RewriteCond %{QUERY_STRING} ^([A-Z][a-z]+.*)$ RewriteRule ^index.php http://benoitst-andre.net/blog/category/%1? [R,L] #Reecriture des index.php?tag/machin en /tag/machin RewriteCond %{QUERY_STRING} ^(tag/.*)$ RewriteRule ^index.php http://benoitst-andre.net/blog/%1? [R,L]
Modification de la config dans Dotclear 2
Ensuite, pour rendre le tout fonctionnel, on doit évidemment configurer Dotclear pour ne plus afficher le index.php. Cela se trouve dans "Tableau de bord", "Paramètres du blog", "URL du blog", duquel il faut évidemment enlever le index.php. J'utilise la méthode PATH_INFO.
Références
Les sites suivants m’ont été très utiles:
- Excellent texte complet sur les RewriteRule d’apache
- Tout petit détail qui a pu tout faire marcher (ajouter un ? à la fin d’une règle
- Autres inspirations lors de la recherche, ça vous en fera moins à chercher: http://petaramesh.org/post/2006/12/... et http://www.sophiemenart.info/?post/...