Les liens du blog version 1 n'étaient pas terrible, du genre "/weblog/index/*", cela venait d'une très ancienne version de Dotclear, et puis après je n'avais jamais vraiment voulu changer. Sur cette nouvelle installation je veux faire disparaitre le "index/" afin que toutes les Urls commencent seulement par "/weblog/" le reste directement. Mais je veux aussi que les gens venant des anciennes "/weblog/index/" arrivent sur l'accueil. Hors sur Dreamhost, quand on appelle seulement "index/" (ou index.php/) avec un slash derrière, et ben ça donne un "No input file specified". J'ai cherché à comprendre et à corriger, mais pressé par le temps et comme je n'ai rien trouvé, j'ai utilisé le Htaccess pour contourner le problème. Du coup, j'ai commencé ce Htaccess avec deux choses :

  • Réécrire les demandes à "index/" seules pour virer le "/" à la fin.
  • Faire en sorte que tout ce qui passe après le /weblog/ soit renvoyé à /weblog/index.php/ avec tous les paramètres derrière pour que cela marche.

J'ai cherché, cherché sur le Web et j'ai fini par trouver mon bonheur chez Kozlika et chez Benoit.

J'ai ensuite rajouté mes propres trucs dans le Htaccess, surtout pour l'histoire de "index/" :

RewriteRule ^index\.php/$ /weblog/ R=permanent

Et pour les archives :

RewriteRule ^index.php/(0-9{4})/(0-9{2}) /weblog/archive/$1/$2

Bref, après tout cela ça marche, et normalement toutes les anciennes URLs sont reprises. Donc pas de casse, un déménagement sans changer d'adresse en quelque sorte !! ;-)

Je met ici le Htaccess complet, pour référence, si vous avez des questions n'hésitez pas !

Options +MultiViews

RewriteEngine On
RewriteBase /weblog/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /weblog/index.php/$1
RewriteRule ^index\.php/$ /weblog/ [R=permanent]

# Pour les redirections des flux RSS/Atom des categories
RewriteCond %{QUERY_STRING} ^cat=([A-Z][A-Za-z0-9_-]*)$
RewriteRule ^rss.php /weblog/feed/category/%1/rss2 [R=301]
RewriteCond %{QUERY_STRING} ^cat=([A-Z][A-Za-z0-9_-]*)$
RewriteRule ^atom.php /weblog/feed/category/%1/atom [R=301]

# Pour les redirections des flux RSS/Atom generaux
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^rss.php /weblog/feed/rss2 [R=301]
RewriteCond %{QUERY_STRING} ^type=co$
RewriteRule ^rss.php /weblog/feed/rss2/comments [R=301]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^atom.php /weblog/feed/atom [R=301]
RewriteCond %{QUERY_STRING} ^type=co$
RewriteRule ^atom.php /weblog/feed/atom/comments [R=301]

# Billet : YYYY/MM/DD/##*
RewriteRule ^index.php/(\d{4})/(\d{2})/(\d{2})/(\d+.+)$ /weblog/post/$1/$2/$3/$4 [R=301,L]

# Categorie : Nom-categorie
RewriteRule ^index.php/([A-Z][A-Za-z0-9_-]*)$ /weblog/category/$1 [R=301,L]

# Archives : YYYY/MM
RewriteRule ^index.php/([0-9]{4})/([0-9]{2}) /weblog/archive/$1/$2