Toutes les bidouilles que je vais narrer ici sont basées sur la réécriture d'URL et la redirection d'URL, effectuées par le serveur.

Afin d'éviter les confusions, je vais rapidement expliquer la différence entre ces deux concepts : Supposez que le facteur vous apporte un colis qui n'est pas pour vous, mais pour l'ancien locataire :

  • Vous acceptez le colis sans rien dire, puis l'apportez vous-même à l'ancien locataire : vous avez fait de la réécriture d'URL : Le colis est arrivé à son destinataire, le facteur n'a rien eu à faire de plus, mais il n'est pas forcément informé que l'adresse du destinataire a changé.
  • Vous n'acceptez pas le colis, mais vous informez le facteur de la nouvelle adresse du destinataire ; le facteur devra aller livrer lui-même le colis à cette adresse : vous avez fait de la redirection d'URL : Le facteur a du effectuer deux livraisons, mais il connaît maintenant la nouvelle adresse du destinataire. La prochaine fois, il s'y rendra directement.

On voit donc que :

  • La réécriture d'URL peut permettre de masquer en permanence le fait qu'une destination réelle diffère de la destination apparente. C'est le serveur qui fait le boulot de livrer le colis au bon endroit.
  • La redirection d'URL permet de prévenir "l'expéditeur" que l'adresse a changé. C'est au navigateur du visiteur de se connecter sur la nouvelle adresse (ce que la plupart des navigateurs font automatiquement), mais c'est surtout utile pour les robots des moteurs de recherche, qui mettent à jour leur index en ne conservant que la destination véritable.
  • La réécriture d'URL est gérée par le module mod_rewrite du serveur web Apache.
  • La redirection d'URL est gérée par le module mod_alias du serveur web Apache.

La disponibilité de ces modules dépend de votre hébergeur.

Je les ai personnellement configurés dans le fichier de configuration du serveur virtuel du domaine de mon blog, qui est chez moi "/etc/httpd/conf/vhosts.d/petaramesh.org.conf".
Mais si vous faites appel à un hébergeur extérieur, vous n'aurez certainement pas accès à un tel fichier, et vous devrez (probablement) mettre les directives en question dans un fichier ".htaccess" installé à la racine de votre site.

Les instructions de redirection devront y être écrites dans l'ordre où je les donne.

Installation de dotclear à la racine

Ceci vous permettra de mette votre blog à l'adresse http://petaramesh.org par exemple, plutôt que http://petaramesh.org/dotclear/index.php.

De même, vos billets auront des URLS comme http://petaramesh.org/post/2006/12/02/Saut-quantique-effectue par exemple, plutôt que http://petaramesh.org/dotclear/index.php/post/2006/12/02/Saut-quantique-effectue.

En premier lieu, déposons le fichier archive de dotclear 2 (Aoraki) : dotclear-2.0-beta3.1.tar.gz (ou .zip) dans le répertoire racine de notre site, et décompressons-le, ce qui crée un sous-répertoire dotclear qui contient la totalité des éléments nécessaires.

(Vous pouvez aussi le décompresser sur votre ordinateur, et uploader par FTP la totalité de l'arborescence ainsi obtenue. Tout dépend de savoir si vous pouvez exécuter une décompression directement sur le serveur, ou pas.)

Personnellement, j'ai choisi de renommer le répertoire dotclear en blog chez moi, mais vous pouvez très bien le garder sous l'appellation dotclear. Il vous faudra seulement modifier en conséquence (n'oubliez pas de le faire !) les règles que je donne ci-dessous.

Ensuite, déplacez le fichier "index.php" du répertoire "blog" vers le répertoire racine de votre site. Personnellement, j'ai également renommé "index.php" en "blog.php".

Modifiez ensuite ce fichier de manière à bien y indiquer le nom de votre blog, si ce n'est pas "default" :

# Define your blog here
        define('DC_BLOG_ID','ashram');

Et prenez soin de bien indiquer la localisation du fichier prepend.php à partir de la racine de votre site :

require dirname(__FILE__).'/blog/inc/public/prepend.php';

Voilà.

Nous allons maintenant nous intéresser aux réécritures à mettre en place, probablement dans votre fichier .htaccess, à installer à la racine. N'oubliez pas d'instructions, et laissez-les bien dans le même ordre :

=> (Documentation mod_rewrite du serveur web Apache.)

RewriteEngine On
RewriteOptions inherit

Ces deux lignes permettent d'activer le moteur de réécriture, et d'hériter ses règles de fonctionnement par défaut de celles définies pour l'ensemble du serveur. Il n'est pas certain qu'elles soient nécessaires chez vous.

RewriteCond %{REQUEST_URI} ^/(admin|locales|public|themes)
RewriteRule ^/(.*)$ /blog/$1 [L]

Ces deux lignes permettent de rediriger les URLs spécifiques à l'interface d'administration et aux différents sous-répertoires de votre installation dotclear.[1]
(n'oubliez pas que le "/blog/" n'est valable que parce que mon blog est installé dans un répertoire appelé "blog". Si chez vous c'est "dotclear", adaptez en conséquence).

RewriteCond %{REQUEST_URI} !^/(cgi-bin|error|icons|robots.txt|favicon.ico|2006/|404|blog|files/|img/|webcollage)

Ici, une regexp définit une série de répertoires ou pages pour lesquelles nous ne voulons effectuer aucune réécriture, de manière à pouvoir accéder à ces pages ou répertoires qui peuvent être installés dans notre site en-dehors de l'architecture du blog lui-même. Il est particulièrement important de mentionner le fichier "robots.txt" si vous en avez un, ainsi qu'éventuellement les répertoires "/cgi-bin" et "/icons" du serveur, si vous voulez qu'on puisse accéder à leur contenu sans se retrouver routé dans le blog.
L'entrée "/2006/" sert à ne pas réécrire les anciennes URLs de l'installation de dotclear 1.x. Elles seront reroutées plus bas.

RewriteCond %{REQUEST_URI} !^/(A-lire-ailleurs|Big-brother|Chienne-de-vie|General|Inferno-chomismorum|Informatique-non-duelle|Intime-universel|Mechancete-gratuite|Miscellania|Non-dualite|Paul-et-mick|Politique-infiniment-dualiste|Pornographie|Port-nawak|Pouet|Raleries-dualistes|Wrt54g)$

Cette entrée spéciale sert à ne pas réécrire les anciennes URLs des catégories de votre blog. Mettez ici vos propres catégories, ou omettez la ligne si vous n'en utilisiez pas ou si vous vous en foutez.

RewriteRule (.*)$ /blog.php/$1 [L]

Voici enfin la règle de réécriture proprement dite, qui rajoute un "/blog.php/" au début de toutes les URLs que le serveur reçoit, et qui n'ont pas été traitées spécifiquement, ou spécifiquement ignorées du fait des règles précédentes.

Redirection des anciennes URL dotclear 1.x

=> (Documentation mod_alias du serveur web Apache.)

dotclear 2 ajoute dans les URLS un élément de "catégorie", comme "/post/", "/archive/", ou "/category/", etc, qui n'existait pas dans dotclear 1.x. Il faurt donc maintenant construire les redirections comme suit :

Redirect permanent /blog/rss.php http://www.petaramesh.org/feed/rss2

Cette permière règle est une tentative de redirection du flux RSS de l'ancienne adresse à la nouvelle, et ça, je ne sais pas du tout si ça marche pour les agrégateurs ;-)

RedirectMatch 301 ^/2006/([0-9]{2}/[0-9]{2}/[0-9][0-9]*-.*)$ /post/2006/$1

Cette règle-ci redirige toutes mes anciennes URLs de posts de 2006, vers les nouvelles. Attention, si vous avez des posts d'années antérieures, mettez plusieurs lignes, ou adaptez la regexp en conséquence.

RedirectMatch 301 ^/2006/([0-9]{2}/[0-9]{2})$ /archive/2006/$1
RedirectMatch 301 ^/2006/([0-9]{2})$ /archive/2006/$1

Ces deux lignes traitent les entrées d'archives (affichage jour et mois, respectivement).

RedirectMatch 301 ^/(A-lire-ailleurs|Big-brother|Chienne-de-vie|General|Inferno-chomismorum|Informatique-non-duelle|Intime-universel|Mechancete-gratuite|Miscellania|Non-dualite|Paul-et-mick|Politique-infiniment-dualiste|Pornographie|Port-nawak|Pouet|Raleries-dualistes|Wrt54g)$ /category/$1

Et enfin cette ligne traite les catégories. Il vous faut donc y mettre vos catégories (celles qui existaient dans votre ancienne installation ; il ne sera pas utile de rajouter des catégories que vous créeriez uniquement dans votre nouvelle installation).

Et voilà. Si vous avez tout bien fait, vous devriez maintenant avoir un dotclear 2 (Aoraki) installé à la racine, et avec des URLs compatibles avec celles de votre vieux dotclear 1.x.

Pour les autres instructions d'installation (initialisation, etc...), veuillez vous rapporter à la belle documentation et au forum approprié...

Elle est pas belle, la vie ?

Notes

[1] Certains sous-répertoires ne sont pas mentionnés : Ceux auxquels le visiteur n'est pas censé accéder directement, par exemple /db/, /inc/ et /plugins/. dotclear y installe par ailleurs un fichier .htaccess contenant l'instruction "Deny from all", qui y interdit l'accès.