Pas Tout A Fait

Aller au contenu | Aller au menu | Aller à la recherche

De belles URLs avec DotClear 2

Dernière mise à jour le 30 août 2011

Les URLs sont assez moches à la base avec Dotclear. Pour arranger ça, il existe plusieurs solutions, qui vont dans tout les sens ! Utilisant "mod_rewrite", l'option "path_info" de Dotclear, le "MultiViews" de htaccess, je me suis perdu dans tout ça avant de trouver la bonne combinaison. Voilà donc un rapide billet pour ne plus galérer comme ça la prochaine fois, en espérant que d'autres puissent y trouver de l'aide. Et n'oubliez pas de vider le cache de votre navigateur avec de vérifier si les modifications ont fonctionné !!

dotclear2.jpg


Un blog dans un répertoire dotclear, mais qui répond à la racine

Pour commencer, petit mise en situation.
Mon Dotclear est installé dans un répertoire nommé dotclear sous la racine de mon espace d'hébergement, par soucis de clarté dans cet espace. Mais je désire que le site soit accessible via "http://www.monblog.com", et pas uniquement via "http://www.monblog.com/dotclear/".

Pour réaliser ça, il faut dans un premier temps copier le fichier index.php situé à l'intérieur du répertoire "dotclear", vers la racine de l'espace d'hébergement.
Puis modifier le fichier déplacé pour que le chemin vers prepend.php inscrit dans ce index.php soit correct. Typiquement il suffit d'éditer le fichier et d'ajouter /dotclear devant '/inc/public/prepend.php', situé vers la fin. On obtient ainsi le chemin complet indispensable au bon fonctionnement de DotClear.

index.php

<?php
# -- BEGIN LICENSE BLOCK ----------------------------------
#
# This file is part of Dotclear 2.
#
# Copyright (c) 2003-2008 Olivier Meunier and contributors
# Licensed under the GPL version 2.0 license.
# See LICENSE file or
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- END LICENSE BLOCK ------------------------------------

if (isset($_SERVER['DC_BLOG_ID'])) {
	define('DC_BLOG_ID',$_SERVER['DC_BLOG_ID']);
} if (isset($_SERVER['REDIRECT_DC_BLOG_ID'])) {
	define('DC_BLOG_ID',$_SERVER['REDIRECT_DC_BLOG_ID']);
}else {
	# Define your blog here
	define('DC_BLOG_ID','default');
}

# Voila la ligne a modifier, ici presente APRES la modification
require dirname(__FILE__).'/dotclear/inc/public/prepend.php';
?>

Dès lors, le site est accessible à l'adresse "http://www.monblog.com". C'est une première bonne chose !


Supprimer la date de publication de l'URL

Maintenant, l'adresse indiquée dans la barre du navigateur quand on consulte un billet est "http://www.monblog.com/index.php?post/2008/12/03/Titredubillet". C'est long, c'est moche, il faut que ça change !

Commençons par retirer les informations concernant la date du billet. Pour cela nous allons utiliser l'extension "about:config", accessible en bas à gauche dans l'administration du blog. Une fois sur cette page, cherchez la ligne nommée post_url_format, suivie par les caractères "{y}/{m}/{d}/{t}". La manipulation est simple, il faut tout retirer, sauf le {t}. Ainsi, seul le titre du billet sera encore apparent, et l'adresse de tout nouveaux billets aura la forme "http://www.pastoutafait.org/index.php?post/Titredubillet". C'est de mieux en mieux !

post_url_format.png

Notez tout de même que les billets créer avant cette manipulation auront toujours la date indiquée. Pour changer cela, il vous faut aller modifier l'URL des billets dans la page d'édition de chacun d'entre eux, sur la droite, URL spécifique. Cliquez sur le petit cadenas pour pouvoir éditer cette partie, et retirer tout les caractères sauf le titre proprement dit.


Supprimer index.php? de l'URL

Bien, notre adresse et donc maintenant de la forme "http://www.pastoutafait.org/index.php?post/Titredubillet", ce qui est bien, mais pas top. Ce index.php? est assez horrible, et c'est sur lui que je me suis escrimé pendant deux nuits !
Voilà la méthode qui a fonctionné chez moi, en deux étapes :

- Tout d'abord, allez dans la section intitulé "Paramètres du blog". Ici ce trouve un élément à modifier, "URL du blog", qui doit passer de "http://www.monblog.org/dotclear/index.php?" à "http://www.monblog.com/". On laisse la méthode de lecture de l'URL à "QUERY_STRING".

url_du_blog.png

- Ensuite, il faut créer/modifier le fichier .htaccess situé à la racine de votre espace d'hébergement, là ou nous avons copié le fichier index.php tout à l'heure. Et dans ce fichier .htaccess, il faut indiquer ceci, en plus de vos éventuelles autres paramètres :

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?$1

Redirect permanent /dotclear/rss.php http://www.pastoutafait.org/feed/rss2
Redirect permanent /dotclear/atom.php http://www.pastoutafait.org/feed/atom
</IfModule>

Les deux lignes contenant <...IfModule...> ne sont peut-être pas nécessaire chez vous, à tester. Et pensez bien à vider le cache de votre navigateur avant de tester, sous peine de ne pas voir les modifications. Nous voilà avec une adresse de la forme "http://www.monblog.com/post/Titredubillet". Beaucoup plus présentable non ?

Et pour peaufiner encore un peu, il est également possible de modifier ce "post" dans l'URL grâce à l'extension "MyUrlHandlers", très simple à utiliser.

Les deux lignes commençant par "Redirect permanent" ne sont utiles que si votre blog est en place avant ces modifications. Dans le cas d'une installation fraîche, pas besoin de les indiquer.

Et voilà, la cure d'amaigrissement est terminé !


En bonus, rediriger les flux RSS vers Feedburner avec le .htaccess

Si vous utilisez Feedburner, il est intéressant de rediriger le flux standard de l'adresse http://www.domaine.tld/feed/atom vers le service. Pour cela, dans la configuration décrite dans ce billet, il faut ajouter les lignes suivantes dans votre fichier .htaccess :

#FeedBurner
RewriteCond %{HTTP_USER_AGENT} !FeedBurner
#RewriteCond %{QUERY_STRING} ^feed/rss2$
RewriteCond %{QUERY_STRING} ^feed/atom$
RewriteRule ^index.php$ http://feeds.feedburner.com/lenomdevotrefeed [R=301,L]

Et hop, toutes les requêtes seront automatiquement redirigées de façon transparente pour l'utilisateur.

Matthieu Patout

Auteur: Matthieu Patout

Restez au courant de l'actualité et abonnez-vous au Flux RSS

Grax Grax ·  01 janvier 2009, 22:56

Merci pour l'explication, ca fonctionne super bien!

jaycreation jaycreation ·  03 juillet 2010, 10:18

Nickel celui là ! je vai ajouter les lignes pour les RSS ! merci

jypill77 jypill77 ·  25 septembre 2010, 15:51

Génial !
Mais il y a une c... dans le potage, j'ai un commentaire et quand je clique desssus :

Error 404 - Not found

Le fichier requis n'a pas été trouvé. Il peut s'agir d'une erreur technique. Veuillez réessayer ultérieurement. Si vous ne pouvez pas accéder au fichier après plusieurs tentatives, cela signifie qu'il a été supprimé.

Que faire ?

Matthieu Patout Matthieu Patout ·  07 octobre 2010, 19:19

@jypill77: Salut,

Je ne vois pas trop où ça coince là, mais il y a un gros problème avec l'url des liens de ton site, par exemple :

http://www.apprenti-informaticien.compost/2010/09/25/Bienvenue-sur-Dotclear%C2%A0!

Ça ne le fait pas du tout le ".compost". :-(

Ajouter un commentaire Fil des commentaires de ce billet

aucune annexe



Voir Aussi

zen-coding-logo.png

Activer ZenCoding dans Geany sous Debian Squeeze

Zen Coding est une extension existante pour les principaux éditeurs de textes et IDE, qui vise à...

Lire la suite

awstats_logo4.png

Installation et configuration de AwStats sur Debian Squeeze

AWStats est un analyseur de log web, ftp et mail, écrit en Perl et disponible sous licence GPL. Il...

Lire la suite


Découvrez le Nouveau « Pack Liberté »