Les url de mon blog sous DotClear 1 ne correspondent pas à celles sous DotClear 2.

Sous DotClear 1, j'étais en path_info, les url étaient de la forme

http://1loup.net/index.php/année/mois/jour/numérodebillet-titre

Sous DotClear 2, je suis en query_string, les url sont de la forme

http://1loup.net/index.php?post/année/mois/numérodebillet-titre

Il y a un plugin DC1 Redirect censé faire ce travail mais cela ne fonctionne pas ici, soit je ne sais pas le faire marcher soit il ne gère pas le changement path_info/query_string !

J'ai fait une recherche sur le forum dotclear pour trouver un peu d'aide parce que je ne comprends pas grand chose à l'url rewriting.

J'ai trouvé DC1 vers DC2 : conserver les urls actives, la règle en question n'était pas loin du but, c'était $4-$5 et non pas $4/$5 qu'il fallait mettre. Comme je passe de path_info à query_string j'ai juste un changement de ? en / à faire.

Bref, ici, l'url rewriting dans mon fichier .htaccess dans mon cas précis qui fonctionne, c'est


RewriteEngine On
RewriteRule ^index.php/([0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)-(.*)$ /index.php?post/$1/$2/$3/$4-$5 [R=301,L]

Comme je suis également en Class B (je supprime le www qui est déprécié), j'ai en plus :


RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Mon .htaccess contient donc, en plus du AddType x-mapp-php5 .php nécessaire à 1and1 pour faire fonctionner DotClear 2 :


RewriteEngine On
RewriteRule ^index.php/([0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)-(.*)$ /index.php?post/$1/$2/$3/$4-$5 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]