Le fichier .htaccess est le couteau suisse de la gestion d’un site web hébergé avec le logiciel serveur Apache. Il permets d’établir des règles, ou même programmer certaines fonctions, qui régissent la façon dont Apache se comporte face à certaines situations et certains comportements des utilisateurs. Bien que le fichier .htaccess puisse sembler assez complexe aux premiers abords, la majorité des webmasters n’ont réellement besoin que d’utiliser quelques fonctions typiques de base dans la plupart des cas. Étudions de plus prêts ces quelques règles générales.
En premier lieu, il faut créer un fichier avec le nom « .htaccess » (oui le point est nécessaire, il indique que c’est un fichier caché sur Unix/Linux). Le fichier n’a pas d’extension. Si on le mets dans la racine (root) du site, toutes les règles inscrites vont s’appliquer au site en entier, si on le mets dans un répertoire en particulier, ces règles ne vont s’appliquer qu’à ce dossier et tout autres dossiers intérieurs.
Petit commentaire: la méthode standard pour inscrire un commentaire dans le fichier htaccess sans qu’il soit pris en compte est d’ajouter le caractère #
avant. Tout ce qui suit sur la même ligne ne sera pas interprété par Apache. Ces commentaires doivent aussi être sur leur propre ligne, et non suivre une commande sur la même ligne.
Voici les règles incontournables que j’utilise dans la plupart de mes sites:
DirectoryIndex
Une directive importante est la définition des noms de fichiers qui sont affichés quand une addresse pointe vers un répertoire. Par exemple:
http://www.example.com/repertoire/
La directive DirectoryIndex
liste ces noms en ordre de priorité, comme suit:
DirectoryIndex index.php index.html /error404.php
Apache cherche le fichier index.php
en premier lieu, s’il ne le trouve pas, il cherche index.html
, etc. S’il ne trouve aucun des fichiers en liste, le dernier devrait être votre fichier d’erreur 404 pour indiquer aux visiteurs qu’il n’y a pas de page à cette addresse.
Le standard est généralement de choisir les noms de fichier « index » avec l’extension voulue, mais rien ne vous empêche de choisir un autre nom, comme accueil.php
, ce qui peut être utile si vous avez un programme installé qui requiert le nom index.php
mais que vous voulez afficher une autre page d’accueil.
Redirect 301
Si vous décidez de déplacer un fichier qui contient des liens extérieurs pointant vers celui-ci et que vous ne voulez pas perdre ces références et afficher une page d’erreur quand les visiteurs sont référés à cette page, on peut utiliser la directive de redirection pour redirriger les visiteurs qui accèdent à cette vieille page vers la nouvelle:
Redirect 301 /vieille-page.php http://www.example.com/nouvelle-page.php
La première page est l’ancienne, qui doit être écrite avec un lien absolu sur votre site (en commençant avec « / »), et la dernière page est la nouvelle, qui doit être écrite avec l’addresse complète du site, soit http://www.example.com/
dans notre exemple. on peut aussi choisir un site différent pour cette nouvelle page, comme http://www.example.org/nouvelle-page.php
.
Cette commande de redirection a aussi le bénéfice de garder (en partie, ce n’est pas toujours clair) la valeur Google PR de l’ancienne page, qui bénéficie de ces liens extérieurs arrivants, vers la nouvelle page. C’est aussi la pratique recommendée par Google et le consortium W3C pour ne pas créer de liens désuets.
Deny from
Si un visiteur devient particulièrement néfaste sur votre site (par exemple, s’il laisse des commentaires inappropriés de façon continue) ou si les logs de votre site indique qu’un individu tente de copier tout votre site, il existe un façon de bloquer son address IP avec htaccess et la commande deny from
, come suit:
#visiteur énervant "iHateYouAll"
Deny from 255.255.255.00
Cette directive va bloquer l’addresse IP de l’individu en question et afficher un message d’erreur de type forbidden
. On peut améliorer le bloquage en élargissant champs d’addresse:
#visiteur énervant "iHateYouAll"
Deny from 255.255.255.00/24
Dans cet exemple, on a bloqué les addresses contenue entre 255.255.255.00
et 255.255.255.255
avec le « mask » /24
. Pour en apprendre plus sur l’utilisation des mask dans l’adressage IP, veuillez vous référez à la page IP Addressing [en].
Allow from
Si on peut bloquer des adresses IP, on peut aussi permettre seulement certaines adresses IP. Par exemple, pour sécuriser la section d’administration de votre site, comme la section admin de votre blog.
Celui-ci contient déjà une méthode d’identification où vous devez insérer un nom d’usager et un mot de passe, mais ce type de logiciels populaires gratuits peuvent parfois souffrir de certaines vulnérabilités, et bien que celles-ci sont normalement réglées en quelques jours, il vous faut mettre à jour le logiciel et beaucoup peuvent attendre plusieurs mois avant de le faire.
Entre temps, des hackers vont développer une méthode automatique pour découvrir les sites qui utilisent ce logiciel et les attaquer. Donc, en plus du login standard, on peut ajouter une protection supplémentaire, de quoi bien dormir sur ses deux oreilles.
Voyez l’exemple suivant, et les explications suivront:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Access Control"
AuthType Basic
order deny,allow
deny from all
# addresse IP de la maison
allow from 255.255.255.00
# addresse IP du bureau
allow from 255.255.255.01
En premier lieu, on utilise la méthode apache pour obliger une autorisation à la section, et par défaut, on interdit l’accès à tous (évidement, on va par la suite se donner accès). On ajoute une ligne où on donne accès à son adresse IP personnelle, dans mon exemple, 255.255.255.00
. Il faut bien sur la connaitre avant tout. Comme il arrive souvent, on veux aussi se donner accès à partir d’un autre endroit, comme le bureau, qui est la ligne suivante, et ainsi de suite.
Si votre connection internet est dynamique et que vous avez une adresse IP différente à chaque fois que vous vous connectez, il suffit de découvrir l’ensemble des adresses utilisées par votre compagnie et de permettre l’accès à un champs élargi qui englobe toutes les possibilités avec le masking, mentionné plus haut.
Pour trouver cette adresse et son mask, il suffit d’insérer votre adresse IP dans un site qui fourni des fonctions d’administration réseau comme WHOIS et IPBlock et de trouver le NetRange ou CIDR de votre compagnie. Voici un exemple avec le service ARIN WHOIS Database Search et une adresse de Google, disons, 66.249.90.136.
Voici d’autres règles htaccess recommandées:
Merci pour cet article, il m’a permis de faire passer le fichier portal.php avant index.php lorsque l’on tape l’adresse de mon site.
Bonjour;
Merci pour vos info. Je voudrais savoir si on peut dans un .htaccess bloquer la copie des pages .php de son site
Une page php ne peut pas etre copiée, on ne peut copier que le contenu HTML produit par cette page …
J’avais un doute sur comment mettre un commentaire dans le fichier htaccess sans qu’Apache ne le prenne en compte. Le doute est levé, merci !;-)
Très intéressant, je prend bonne note de tous ces conseils !! Et une bonne année 2011 !
Merci beaucoup pour tous ces conseils, je connaissais déjà un peu htaccess mais là c’est vraiment top !!!