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/
Commentaires
Supair \o/
Ma version du _public.php :
Et dans le fichier .htacess :
>osku : c'est pas plus mal ;)
Avec ma version, l'avantage c'est qu'on peut mettre
ErrorDocument 403 /p403/pwet
dans le .htaccess, ça fait pareil :D
Je n'arrive à obtenir que cela :
Fatal error: Cannot redeclare class myURLHandlers in /homez.13/oum/www/dotclear/themes/woof/_public.php on line 16
:/
Oum : essaye de renommer
myURLHandlers
dans ton fichier_public.php
.J'ai remplacé
myURLHandlers
parmy403URLHandlers
et ça fonctionne, merci Moe :)Bonjour,
merci pour vos conseils
j'ai tout suivi, mais la page 404 personnalisé continu à s'afficher, pas de 403.
si je tape : www.euros-en-argent.fr/dotclear
j'arrive sur la 404 et pas la 403....
c'est surement une évidence mais je suis un débutant et c'est mon premier pas sur le net grâce à dotclear
@+
@wanfr : une erreur 404 indique une page non trouvée alors qu'une erreur 403 indique un contenu inaccessible.
Tu dis
, c'est peut-être parce que cette page est une page qui n'existe pas et non une page qui existe mais dont tu as interdit l'accès ?re,
merci pour la réponse rapide.
]
donc moi si je tape www.euros-en-argent.fr/dotclear/public je devrai arriver sur une 403.
Mais j'arrive sur ma 404 personelle
j'enlève ErrorDocument 403 /index.php?/p403/erreur de mon .htaccess et là je tombe sur une 403 standard
je ne comprends plus rien
@+
Tu as installé Dotclear à la racine ou dans un dossier
/dotclear/
? Quelle est l'URL du répertoire public de ton blog ?re,
j'ai copier le dossier dotclear à la racine.
Puis j'ai fait une "installation propre" mes fichiers dans un dossier "blog" à la racine lui aussi
donc à la racine j'ai index.php, .htaccess, dossier doctlear et dossier blog
l'url /dotclear/public/ existe mais je pense que ma publique est /blog/public/
et je suis passé en 2.1.6
merci et @+
J'ai exactement le même problème
Si je mets
ErrorDocument 403 /dotclear/index.php?/p403/erreur
Je tombe sur ma page "Document non trouvé" (404)
Par contre si je mets
ErrorDocument 403 /dotclear/index.php/p403/erreur (le ? en moins)
Je suis redirigé sur /dotclear/index.php
Autre souci, c'est que ça donne une page "erreur" correspondant au thème /dotcear/ aux blogs annexes :/
N'est il pas possible d'avoir une redirection spécifique pour chaque blog ?
merci :D
Je voulais demander est ce qu'on peut éviter une page 403 ?
@Catlam : essaye d'échapper le point d'interrogation avec un antislash :
ErrorDocument 403 /dotclear/index.php\?/p403/erreur
@Dot : peux-tu être plus précis ? Tu veux éviter que ton site crée des erreurs 403 ou que des erreurs 403 s'affichent ?
Non justement, j'allais régulièrement sur un site et depuis quelques jours la page m'affiche une erreur 403 et je voudrais demander si je peux la contourner ? (en gros l'éviter)
Merci d'avance pour ta réponse.
@Dot : pour être tout à fait clair, tu veux dire que l'erreur n'est pas sur ton site ?
Non, sur un site que je fréquentais souvent. (mais c'est pas mon site)
Donc y a pas de moyen pour éviter la page 403 du site ?
@Dot : ici on aide les utilisateurs de Dotclear à utiliser leur blog. Si tu veux contourner des mesures de sécurité, ça te regarde mais ne compte pas sur nous pour t'aider.
@Moe : Désoler alors !!
Mais auriez (connaissez) un site/forum pour m'aider (pour mon problème) ?
Alors vous connaissez pas un site un site/forum pour m'aider (pour mon problème) ?
C'est vraiment important.
Bonjour,
J'ai essayé cet astuce bien sympa sur mon site sous dotclear, mais cela ne marche pas.
J'ai essayé le code php de Philipe et celui d'osku, dans tous les cas le /index.php/p403/ me renvoi sur ma page d'accueil, si je met /index.php?/ je tombe sur une 404 (personnalisée).
J'ai pu voir en mettant l'adresse du _public.php pour la redirection que celui ci ne semble pas s'exécuter correctement ...
Des idées ?
Merci d'avance.
La page 403 s’affiche sans problème chez toi à l’url /index.php?p403/erreur ou, normalement, sur tout document dont l’accès est interdit ;-)
Merci pour l'information je viens de tester, il fallais effectivement ecrire /index.php?/p403/erreur, et non pas /index.php?/p403/erreur ...
ah désolé j'ai posté trop vite, donc je disait il ne faut pas mettre de "/" entre le ? et le p la bonne url est donc: /index.php?p403/erreur
Oui, d’ailleurs aucune url du blog ne comporte /index.php?/ dans Dotclear ;-)