htaccess

De Vulgum Techus
Aller à : Navigation, rechercher
Lien court vers cette page : https://vt.cx/htacss
QR code vers cette page : https://vt.cx/htacss.qr

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

Par programme PHP

<?php echo crypt('<mot_de_passe'); ?>

Connaitre le chemin absolu vers .htpasswd

Sous Linux

locate .htaccess

Par programme PHP

<?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

Articles Vulgum Techus

Commentaires

blog comments powered by Disqus