htaccess
Lien court vers cette page : https://vt.cx/htacss QR code vers cette page : https://vt.cx/htacss.qr
Sommaire
Présentation
.htaccess est un fichier stratégique dans la gestion des accès, dans la réécriture d'URL (SEO) ou dans la protection d'un dossier. Il est situé à la racine d'un site
Redirection des erreurs
Il est très pratique de rediriger les erreurs d'accès vers une page définie à l'avant pour éviter d'affreux messages de rejets du serveur. Pour cela utiliser la directive qui suit :
Prévoir une commande ErrorDocument pour chaque numéro d'erreur traitée ErrorDocument 401 <adresse de redirection> ErrorDocument 403 <adresse de redirection> ErrorDocument 404 <adresse de redirection> ErrorDocument 500 <adresse de redirection> exemple ErrorDocument 404 https//monsite.com/plan_du_site
Protection d'un dossier par mot de passe
Pour protéger un dossier et ses sous-dossiers à l'aide d'un identifiant et d'un mot de passe, .htaccess se révèle très utile. Il allie l'efficacité à la simplicité comme expliqué ici :
- Créer le fichier texte .htaccess dans le répertoire à protéger
- Y inclure le contenu suivant :
AuthName "Restricted Area" AuthType Basic AuthUserFile /<chemin_d'accès_absolu>/.htpasswd (exemple /var/www/vhosts/<mysite.com>/httpdocs/dev/) AuthGroupFile /dev/null require valid-user
- dans .htpasswd situé dans à l'endroit indiqué par le <chemin_d'accès> mettre le mot de passe sous la forme :
<login>:<mot_de_passe_crypté>
login = identifiant en clair
mot_de_passe_crypté = mot de passe crypté par PHP comme expliqué plus bas
Crypter le mot de passe par PHP
Plusieurs méthodes sont possible pour crypter le mot de passe :
Via un site de cryptage
Dynamic Drive .htaccess Password Generator = Générateur htpasswd pour fichier .htaccess Aide Info .htpasswd Script de cryptage de mots de passe pour fichier .htpasswd
<?php echo crypt('<mot_de_passe'); ?>
Connaitre le chemin absolu vers .htpasswd
Sous Linux
locate .htaccess
<?php echo realpath('.htpasswd'); ?>
Bannir un site ou plusieurs référents
Les sites référents sont ceux qui envoient des connexions sur un autres sites. La plupart sont bienveillants mais d'autres le sont moins comme ceux qui :
- Envoient utilisateurs non concernés ou des faux visiteurs
- Utilisent des images ou du contenu en insérant leur lien sans l'accord du propriétaires des dits contenus
Pour bloquer toutes les connexions issues de l'un ou de plusieurs de ces sites, htaccess est l'outil idéal comme expliqué maintenant.
- Créer ou éditeur le fichier texte .htaccess à la racine du site dont on veut bloquer l'accès à un site référent
- Mettre l'un des contenus suivants selon le cas de figure :
# Bloquer les accès d'un site référent RewriteEngine on RewriteCond %{HTTP_REFERER} <site_à_bloquer\.TLD> [NC] RewriteRule .* - [F]
# Bloquer les accès de plusieurs sites référents RewriteEngine on RewriteCond %{HTTP_REFERER} <site_à_bloquer\.TLD> [NC,OR] RewriteCond %{HTTP_REFERER} <autre_site_à_bloquer\.TLD> RewriteCond %{HTTP_REFERER} <encore_un_autre_site_à_bloquer\.TLD> RewriteRule .* - [F]
- Remplacer <site_à_bloquer\.TLD>, <autre_site_à_bloquer\.TLD> et <encore_un_autre_site_à_bloquer\.TLD> par les domaines des site à bloquer exemple : vilainpasbo\.net
- Attention ! Le point de l'adresse doit être précédé d'un backslash sinon il est interprété comme un joker servant à remplacer n'importe quel caractère
Bloquer une ou plusieurs IP
Il est possible de bloque des IP précises, IP par IP ou des blocs d'IP sur le 1er, 2nd ou 3e bloc comme dans l'exemple ci-dessous.
# bloque les IP 111.222.123.XXX & 211.110.127.207 & 46.183.220.150 Order Allow,Deny Allow from all Deny from 111.222.123 Deny from 211.110.127.207 Deny from 46.183.220.150
Bloquer une ou plusieurs langues spécifiques
Le générateur situé au lien suivant permet de bloquer une ou plusieurs langues spécifique : http://freetools.webmasterworld.com/tools/htaccess-block-language/
# Blocage du biélorusse, du russe et de l'ukrainien : RewriteEngine On RewriteCond %{HTTP:Accept-Language} (be|ru|uk)$ [NC] RewriteRule .* - [F,L]
Supprimer ou ajouter www de l'URL
On peut souhaiter ajouter supprimer les www des URL pour permettre une uniformisation de ces dernières à savoir :
Ajout de www domain.tld -> www.domain.tld www.domain.tld -> www.domain.tld Suppression de www domain.tld -> domain.tld www.domain.tld -> domain.tld
Ceci avec mod_rewrite grâce au .htaccess à la base du site concerné comme expliqué ici :
Suprimer www
Méthode 1
Ajouter dans .htaccess
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]
Ajouter www
Méthode 1
Ajouter dans .htaccess
RewriteEngine on RewriteCond %{HTTP_HOST} ^\.(.*)$ [NC] RewriteRule ^(.*)$ http://www.%1%{REQUEST_URI} [R=301,QSA,NC,L]
Articles externes
- StopTheHackers - 05/11/12 How to discover and remove malicious redirects in the .htaccess file