Rappel : comment protéger ses répertoires

Pour interdire aux visiteurs d'explorer vos répertoires, vous pouvez ajouter dans un fichier .htaccess à la racine du site le code suivant :

Options -Indexes

Cela aura pour effet de renvoyer la page d'erreur 403 qui signifie que l'accès est refusé. Nous allons maintenant nous appliquer à la personnaliser.

Créer la page d'erreur 403 personnalisée

Dupliquez dans le répertoire tpl de votre thème la page 404.html qui y figure ou celle du thème par défaut, et renommez la en 403.html

Modifiez les termes suivants

  • {{tpl:lang Document not found}} en {{tpl:lang Acces denied}} (3 occurences)
  • {{tpl:lang The document you are looking for does not exists.}} en {{tpl:lang You are not allowed to visit this page}}

Traduisez les messages

Si votre thème n'en possède pas, créez un répertoire locales, puis à l'intérieur de celui-ci un répertoire fr, et enfin dans ce répertoire un fichier nommé public.po.

Dans ce fichier entrez les traductions nécessaires

msgid "Acces denied"
msgstr "Accès refusé"

msgid "You are not allowed to visit this page"
msgstr "Vous n'avez pas l'autorisation de visiter cette page"

Vous pouvez bien entendu adapter ces traductions.

Dire à Dotclear que cette page existe

Si vous n'en avez pas, commencez à créer un fichier nommé _public.php que vous placerez à la racine de votre thème. A l'intérieur ajoutez le code suivant :

<?php
//cette ligne indique à Dotclear où chercher les traductions
l10n::set(dirname(__FILE__).'/locales/'.$_lang.'/public');

$core->url->register('p403','p403','^p403/(.+)$',array('myURLHandlers','p403'));
class myURLHandlers extends dcUrlHandlers
{
	protected static function p403()
	{
		header('Content-Type: text/html; charset=UTF-8');
		http::head(403,'Forbidden');
		$GLOBALS['core']->url->type = '403';
		echo $GLOBALS['core']->tpl->getData('403.html');
		exit;
	}
}
?>

(si vous aviez déjà ce fichier ne copiez pas la première ni la dernière ligne de ce code...)

Donner au serveur Apache l'adresse de votre page personnalisée

Dans le fichier .htaccess à la racine de votre site, ajoutez la ligne suivante

ErrorDocument 403 /dotclear/index.php/p403/erreur

Cette ligne est bien entendu à personnaliser si votre blog est en query_string ou s'il répond à la racine de votre site.

En résumé, indiquez l'url du blog à partir de la racine en ajoutant /p403/erreur à la fin.

Testez enfin votre jolie page en allant par exemple à l'adresse : http://urldublog/public/