Table des matières

Faire fonctionner Dotclear à la racine de son site

Faire fonctionner Dotclear à la racine de son site est assez simple. Il existe plusieurs cas de figure.

Une installation dans un sous-répertoire avec url à la racine

Cette procédure est celle que nous recommandons en premier lieu, notamment parce qu'elle facilitera grandement les mises à jour ultérieures. Elle est décrite dans l'article Un Dotclear proprement à la racine du Petit Dotclear Illustré..

Installation avec tout dans la racine

Pour cette configuration, on suppose que vous avez installé tous les fichiers de Dotclear directement à la racine de votre espace Web. Il n'y a donc pas de répertoire dotclear, le fichier index.php est accessible directement en allant sur votre site.

On suppose que Dotclear est installé correctement. Par défaut, vos URL vont être fausses, il va falloir changer pas mal de choses dans votre configuration. Voici les options à changer et leurs valeurs correctes :

Une fois votre configuration sauvegardée, vous devriez voir votre weblogue avec sa feuille de style et des URL correctes. Vous constaterez que vos URL sont maintenant http://votre-site/?2004/ ce qui n'est pas plus mal.

Avec de belles URL

Vous n'aimez pas les URL du type /?2004… mais vous voulez que votre weblogue soit à la racine de votre site ? C'est possible à une condition : pouvoir utiliser mod_rewrite dans un fichier .htaccess.

Si vous ne savez pas si c'est possible, le plus simple est d'essayer. La première chose à faire est de changer, dans la configuration, votre type d'URL en Path Info.

Ensuite, faites un fichier .htaccess dans lequel vous mettrez le code suivant :

RewriteEngine On

RewriteRule ^[0-9]{4} /index.php [QSA,L]
RewriteRule ^[A-Z][a-z]+ /index.php [QSA,L]

Ces règles de rewrite impliquent deux choses très importantes :

Note :

le rewrite peut avoir des comportements très étranges en fonction des hébergeurs, notez ici vos règles de rewrite qui marchent (ou qui sont mieux que celles du dessus).
# Autres règles de rewrite possibles


# Avec dc_blog_url = /blog/page/ si la première règle est "RewriteRule ^[0-9]{4} /index.php [QSA,L]"
# alors la page http://www.site.com/blog/page/ renvoie une erreur 404 sur mon hébergeur.
# En revanche, si je met "RewriteRule ^[0-9]{0,4} /index.php [QSA,L]", tout fonctionne.
# (pour ceux qui n'ont pas vu de différence, elle se situe au niveau du "{4}" et du "{0,4}")
#
# Ça donne donc:

RewriteEngine On

RewriteRule ^[0-9]{0,4} /index.php [QSA,L]
RewriteRule ^[A-Z][a-z]+ /index.php [QSA,L]

# Note (Olivier) : C'est étonnant ce comportement de Apache avec les regexp. Il faudrait
# peut-être essayer [0-9]{,4} (ou [0-9]{4,4}) pour voir si ça fonctionne. Sinon il y a le style moins classe :

RewriteRule ^[0-9][0-9][0-9][0-9] /index.php [QSA,L]

# C'est un peu vilain quand même ;-)

Pour une transition en douceur

Si vous avez commencé votre blog avec les URL standards du type /?2004… et que vous avez changé par la suite vers les "belles URL" décrites ici, les liens externes pointant vers vos posts ne fonctionneront plus. Heureusement, il y a une solution pour faire la transition sans abandonner les anciens liens :

RewriteEngine On

# cette partie permet aux anciens liens du type http://blog.domaine.com/?2004/07 d'etre traduits
RewriteCond %{QUERY_STRING} ^[0-9]{4} [OR]
RewriteCond %{QUERY_STRING} ^[A-Z][a-z]+
RewriteRule ^$ /%{QUERY_STRING}? [R=permanent,L]

# et ca c'est la regle classique pour les jolies URL
RewriteRule ^[0-9]{4} /index.php [QSA,L]
RewriteRule ^[A-Z][a-z]+ /index.php [QSA,L]

Dernier recours

Chez certains hébergeurs ne permettant pas les rewriterules mais n'ayant pas complètement interdit l'utilisation des .htaccess, il est possible de contourner le problème en configurant Dotclear en Path Info et en entrant la ligne suivante dans le fichier .htaccess :

ErrorDocument 404 /index.php

Il est à noter que cette méthode entraîne l'impossibilité d'avoir une page d'erreur 404 séparée.

Ajout (Olivier) : il est surtout à noter que la redirection en 404 ne redirige pas les données passées en POST, donc plus l'ajout de commentaire ne marche pas par défaut.