DotClear 2.0 et les redirections d'url

La forme des urls sous DotClear 1 et sous DotClear 2 est légèrement différente. Le forum officiel propose bien une solution, malheureusement ayant modifié mes adresses à la fois sous DotClear 1 et sous DotClear 2.0, je ne peux appliquer cette astuce. J'ai donc du me faire un petit fichier .htaccess perso.

Petit récapitulatif des différences entre les urls de DotClear 1 et celle de DotClear 2 :

  • DotClear 1 standard : index.php/annee/mois/jour/id-titre_du_billet
  • DotClear 1 LLaumgui : index.php/titre_du_billet
  • DotClear 2 standard : index.php/post/annee/mois/jour/titre_du_billet
  • DotClear 2 LLaumgui : /post/titre_du_billet

But de l'opération :

Le but est de rediriger les urls de type index.php/titre_du_billet vers post/titre_du_billet. Attention cependant aux pages spéciales de DotClear telles que les archives ou les catégories de billets.

L'.htaccess expliqué :

RewriteEngine On

Activation de la réécriture des urls.

# Redirection sur le www :
#
RewriteCond %{HTTP_HOST} !^www.llaumgui.com$
RewriteRule ^(.*)   http://www.llaumgui.com/$1  [QSA,L,R=301]

On redirige les urls llaumgui.com vers www.llaumgui. On ne référence ainsi qu'un seul nom de domaine.

####
# Vielles URL DC1 :
# Vieux RSS :
Redirect permanent /rss.php http://www.llaumgui.com/feed/rss2
Redirect permanent /atom.php http://www.llaumgui.com/feed/atom

Redirection des anciennes urls des feeds.

# Vielle TOC :
RedirectMatch permanent /index.php/toc(.*)$ http://www.llaumgui.com/archive

On redirige l'ancien plugin de <em>Table des matières</em> vers les archives de DotClear 2.0

# Vieux billets :
RewriteCond %{REQUEST_URI} !^/index\.php\/?$
RewriteCond %{REQUEST_URI} !^/index\.php/archive
RewriteCond %{REQUEST_URI} !^/index\.php/category
RewriteCond %{REQUEST_URI} !^/index\.php/feed
RewriteCond %{REQUEST_URI} !^/index\.php/page
RewriteCond %{REQUEST_URI} !^/index\.php/post
RewriteCond %{REQUEST_URI} !^/index\.php/tag
RewriteCond %{REQUEST_URI} !^/index\.php/tags
RewriteRule index.php/(.*) http://www.llaumgui.com/post/$1  [QSA,L,R=301]

On redirige les urls de type <em>index.php/titre_du_billet</em> en tenant compte des pages spéciales de DotClear :archives, catégories de billets, etc...

# Disparition du index.php
#Exécution des fichiers en PHP5
AddType x-mapp-php5 .php
#Indication du répertoire racine pour la réécriture
RewriteBase /
#Pas de réécriture si le fichier (-f, file) ou le dossier (-d, directory) existe
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
#Passage de la page demandée entière sur le index.php/
RewriteRule (.*) index.php/$1
#Redirige index.php vers index.php/ pour éviter les 404 de DC
RewriteRule ^index.php$  index.php/
#Redirige vers index.php/ si on demande pas de page spécifique
DirectoryIndex index.php

On passe d'urls standards de type index.php/post/titre_du_billet vers un format sans index.php : /post/nom_du_billet.

Annexes

2 réactions

  • De Blaise De Blaise - 25/02/2009, 09:31 #1

    Bonjour!

    Je poste sur ce sujet assez ancien mais je me retrouve actuellement dans une problématique de réécriture d'url.

    Anciennement, mon blog avec des adresses de ce type : ndd.fr/blog/?titre-article et maintenant, j'ai ndd.fr/blog/?post/titre-article.

    Je cherche à rediriger les anciennes adresse (ndd.fr/blog/?titre-article) vers leur équivalent au nouveau format d'url.

    est-ce que vous pensez pouvoir m'aider? Parce que là, je perds ton le référencement acquis auparavant...

    Merci d'avance!

  • De jaycreation De jaycreation - 03/07/2010, 10:05 #2

    Bon pour ma part ça n'avait pas fonctionné chez oxito.
    J'ai fait quelque chose de bcp plus simple mais ça fonctionne :
    http://blog.jaycreation.net/post/En...

Attribution - Partage dans les Mêmes Conditions 4.0 International