====== 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 [[http://petit.dotclear.net/pages/2005/11/16/94-un-dotclear-proprement-a-la-racine|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 :
* URL vers le blogue : /
* Emplacement de l'application : **laissez vide**
* Emplacement des images : /images/
* Emplacement du fil RSS : /rss.php
* Emplacement du fil Atom : /atom.php
* URL de trackback : /tb.php
* Type des URL : Query String
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 :
* Vos catégories doivent impérativement commencer par une lettre en capitale ;
* Si vous ajoutez des dossiers dans votre site, ceux-ci ne doivent pas commencer par une lettre en capitale ou par 4 chiffres.
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.