changement de format des URL et redirection .htaccess avec dotclear 1.2
Par traaf le jeudi 27 mars 2008, 16:46 - Dernières nouvelles du front - Lien permanent
Ayant eu pas mal de difficultés à parvenir à mes fins, j'espère que ce billet évitera ces complications à d'autres 
Le contexte
Mon installation de dotclear commence à dater, installation faite en utilisant le format QUERY STRING, le tout dans un sous-répertoire dotclear, ce qui produisait jusque là des URL au format :
http://www.breizh-ardente.fr/dotclear/index.php?2008/03/27/99-changement-de-format-des-url-et-redirection-htaccess-avec-dotclear-1qui sont maintenant de cette forme :
http://www.breizh-ardente.fr/dotclear/99-changement-de-format-des-url-et-redirection-htaccess-avec-dotclear-1
Passage du mode QUERY STRING au mode PATH INFO
Je viens sans difficulté de basculer le tout au format PATH INFO et de simplifier leur apparence (suppression de la date) au moyen du plugin personnalisation d'URLs, en rajoutant une petite astuce de réécriture d'URL pour supprimer aussi le index.php de l'URL.
Mon .htaccess de départ est le suivant :
Redirect temp /index.html http://www.breizh-ardente.fr/dotclear/
ErrorDocument 404 /dotclear/erreur404
AddType application/x-httpd-php5 .php
RedirectPermanent /dotclear/punbb http://forum.breizh-ardente.fr
# RSS Dotclear 1
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} !FeedBurner
RewriteRule dotclear/rss.php$ http://feeds.feedburner.com/Breizh-ardente [L,R=301]
Commencez par basculer les URLs au format PATH INFO. Connectez vous à votre interface d'administration, onglet «outils», rubrique «configuration de dotclear», champ «Type des URL».
Installez le plugin et choisissez le format qui vous convient
Supprimer index.php de l'URL
Ensuite, toujours dans la «configuration de dotclear», champ «URL vers le weblogue», enlevez index.php de l'adresse du blog
Chez moi, /dotclear/index.php devient /dotclear/
Reste à activer le mod rewrite dans le fichier .htaccess, ce qui passe par les instructions :
RewriteEngine on RewriteBase /à rajouter au début du fichier si elles ne sont pas encore présentes, puis rajouter à la fin :
# URL simplifiees
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /dotclear/index.php
En l'état, les nouvelles URLs sont fonctionnelles.
Reconnaitre les anciennes URLs dans les liens externes
La partie qui m'a fait suer : faire en sorte que les liens externes pointant vers des articles existants soient redirigés vers la nouvelle adresse.
La solution passe encore par de la réécriture d'URL, un peu plus avancée cette fois.
Première difficulté : les URL entrantes sont au format QUERY STRING qui n'est plus pris en charge par le blog
Ensuite, une chaine significative de l'URL n'existe tout simplement plus...
Je ne vais pas refaire un tutoriel sur la réécriture d'URL, c'est pas dans mes cordes, je vais juste vous indiquer quelques liens qui m'ont permis de parvenir à mes fins :
- http://www.webmaster-hub.com/publication/Mod-rewrite-ou-la-reecriture-des.html
- http://www.webrankinfo.com/analyses/autres/url-rewriting-debutants.php
- http://web.developpez.com/tutoriel/apache/urlrewriting/
Ce qui conduit à établir les règles suivantes :
# anciennes URL
RewriteCond %{QUERY_STRING} ^([0-9]{4})/([0-9]{2})/([0-9]{2})/([0-9]{2,3})-([a-zA-Z0-9-]+)$
RewriteRule ^dotclear/index.php /dotclear/%4-%5? [L,R=301]
# anciennes categories
RewriteCond %{QUERY_STRING} ^([A-Z][a-zA-Z0-9-]+)$
RewriteRule ^dotclear/index.php /dotclear/%1? [L,R=301]
À placer dans le fichier .htaccess AVANT la partie #URL simplifiees
En résumé :
Le changement de format d'URLs oblige à passer par la condition RewriteCond %{QUERY_STRING} au lieu d'une simple règle RewriteRule
Le détail important : le caractère ? à la fin de l'URL réécrite, toujours à cause de l'ancien format QUERY STRING
Indispensable : les options [L,R] en fin de règle pour éviter une erreur 500
Commentaires
Bonjour,
J'ai besoin d'aide ! J'utilise l'URL Rewriting depuis un moment, grace au plugin Personnalisation.
J'étais jusqu'alors en mode Query String. Si je change en Path Info, plus rien ne fonctionne, mon blog devient inaccessible...
Le browser tourne en rond, jusqu'à ce que je l'arrête et constate les dégats : l'url affichée est alors
h**p://djoh.net/blog/?cc=1?cc=1?cc=1?cc=1?cc=1?cc=1?cc=1?
Une idée ?
merci, exactement ce qu'il me fallait
Bonjour,
Je galère en passant de Dotclear à Wordpress.
J'aimerai que toutes mes URL du type http://www.technobuzz.fr/index.php? pointe sur http://www.technobuzz.fr/v2/
Une idée simple avec le .htacess ?
Merci.
merci beaucoup
exactement ce don't j'avais besoin pour passer des blogs dotclear gandi à mon propre hebergement.
merci
nacene
Merci pour cet article, cela m'a été utile pour la migration de mon blog vers dotclear 2
Bonjour,
!
merci beaucoup
Cependant pour moi seule la réécriture en path_info sans le index.php pour les liens internes fonctionne.
Je ne sais pas pourquoi, mais les liens externes ne sont pas réécris lorsqu'on arrive sur le blog
J'aurais 2 petites questions :
1 - que doit on cocher dans le plug in personnalisation d'URLs, colonne "reconnaissance" ?
2 - cette méthode fonctionne t elle avec le format d'url : "Sans date ni numéro de billet" du plug in personnalisation d'URLs ?
Bonjour à tous.
Suite à une erreur de paramétrage de VirtualHost, j'ai rediriger par erreur mon site http://www.habilitation-electrique.... sur un autre site http://www.formation-sketchup.fr.
Cela semble avoir été pris pour une redirection définitive par Google... Peut-on annuler une redirection permanente ?