Quand on a plusieurs services sur son site web, on les met dans des sous-répertoires différents du site, par exemple http://monsite.org/blog/, http://monsite.org/wiki/, etc. Cependant c'est plus sympa de pouvoir y accéder par des URL imitant des sous-domaines (http://blog.monsite.org/, http://wiki.monsite.org/), notamment si un jour il faut migrer un des services sur un serveur externe. L'opération pour DotClear est expliquée dans le billet De belles URL sous Dotclear 2.

Cependant les explications données ne fonctionnent chez MavenHosting que pour les pages et pas pour les fichiers appelés par les pages (styles CSS, JavaScript, images, etc.). En effet, en inspectant les requêtes arrivées au serveur, on constate que les pages n'ont plus de référence au sous-répertoire alors que les fichiers appelés par les pages l'ont encore… La solution est indirectement livrée par une des astuces de ré-écriture d'URL expliquée dans l'article more .htaccess tips and tricks : il faut ré-écrire différemment les URL des pages et du reste.

Si on suppose que le blog est installé dans le sous-répertoire dotclear/, le fichier .htaccess à placer dans ce répertoire est le suivant :

# Activation du moteur de réécriture
RewriteEngine On

# Si le fichier demandé n'existe pas physiquement
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# On commence par chercher un début en dotclear/ (pour les css, js, images, etc.)
RewriteRule ^dotclear/(.*) http://monsite.org/dotclear/$1 [L]

# S'il n'existe toujours pas
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# On envoie la demande à l'index de Dotclear
RewriteRule (.*) /index.php/$1 [L]
RewriteRule ^$ /index.php [L]

Chez notre hébergeur, ça marche !