Utilité du fichier .htaccess

Qu’est ce que le .htaccess ?

.htaccess est un fichier de type texte utile pour de nombreux serveurs Web. Il permet de remplacer la configuration par défaut du serveur lors de l’exécution. En utilisant .htaccess, il devient facile d’activer ou de désactiver toute fonctionnalité au moment de l’exécution. Cependant, en tant que webmaster, il faut être prudent lorsque de la configuration via .htaccess car toute erreur peut causer un arrêt l’ensemble de votre site.

Il est à noter que la directive AllowOverride permet d’autoriser ou pas l’utilisation des fichiers .htaccess.


Impact de l’utilisation du .htaccess

Il est vrai que le fichier .htaccess permet aux webmasters d’adapter la configuration de leurs serveurs d’hébergement à leurs besoins. Mais, ceci n’est pas sans défaut.

En fait, lorsque cette directive est activée, le démon HTTPD va rechercher la présence des fichiers .htaccess dans chaque répertoire de l’hébergement. Donc, permettre l’utilisation des fichiers .htaccess est une cause de dégradation des performances, que nous utilisions effectivement ces fichiers ou non. De plus, le fichier .htaccess est chargé en mémoire chaque fois qu’un document fait l’objet d’une requête.

Utilité du fichier .htaccess

Le fichier .htaccess est utilisé généralement pour plusieurs raisons. Parmi lesquelles, nous pouvons citer :

1. Appliquer des paramètres de base du serveur web

La majorité des hébergeurs permettent l’utilisation du fichier .htaccess afin de donner à leurs clients la possibilité de modifier un certains nombre de paramètres généraux.

Voici un exemple extrait d’une configuration d’un pack d’hébergement mutualisé d’Ooreedoo.tn :

<IfModule php5_module>

php_flag asp_tags Off
php_flag display_errors Off
php_value max_execution_time 30
php_value max_input_time 60
php_value max_input_vars 1000
php_value memory_limit 128M
php_value post_max_size 8M
php_value session.gc_maxlifetime 1440
php_value session.save_path « /tmp »
php_value upload_max_filesize 10M
php_flag zlib.output_compression On

</IfModule>

2. Désactiver l’exploration des répertoires

Parmi les erreurs très répondues dans le web, on peut citer l’affichage du contenu d’un répertoire ne contenant pas un fichier index. Ceci aurai bien sûr un impact négatif puisqu’il permet la divulgation des fichiers du dossier web.

Afin de remédier à cette erreur, il suffit d’une ligne de code dans le fichier .htaccess :

Options -Indexes

3. Créer des redirections

La redirection est une technique utilisée dans le web afin de se déplacer de façon automatique d’une page web à une autre. Elle peut être créer de plusieurs façon :

  • via les langages côté client tels que HTML (en utilisant la balise Meta refresh), Javascript
  • via les langages  côté serveur comme PHP, JAVA, …
  • via le fichier .htaccess

Il est à noter qu’il y a 5 types de redirections :

  • 2 types de redirections transparentes ayant pour codes 301 et 308 bien que la redirection 301 est la plus utilisée.
  • 3 types de redirections temporaires ayant pour code 302, 303 et 308

Voici des exemples d’utilisation d’un fichier .htaccess pour créer une redirection transparente 301 :

Redirection 301 vers la version SSL du site :

RewriteEngine on

RewriteCond %{SERVER_PORT} 80
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Redirection de la version non www à www :

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

Redirection d’une page web vers une autre

redirect 301 adresse-page-source adresse-page-destination

4. Limiter l’accès à tout ou une partie du site

Parmi les utilisations du fichier .htaccess également l’autorisation ou le blocage de l’accès à une partie ou à la totalité du site. Ceci est généralement utiliser pour des raisons de sécurité.

Voici un exemple de limitation d’accès via .htaccess : Bannir des adresses IP

La directive Deny permet de bannir une adresse IP par contre la directive Allow permet de donner le privilège d’accès.

Le code ci-dessous permet d’autoriser l’accès à toutes les adresses IP sauf celles préfixées par Deny from :

<IfModule !mod_authz_core.c>

Order allow,deny
Allow from all
Deny from env=DenyAccess
Deny from 54.165.130.69
Deny from 54.67.93.223

</IfModule>

5. Optimiser les performances du site

La majorité des sites web d’aujourd’hui ont des problèmes de ralentissement d’affichage vu les techniques utilisées. Afin de remédier à ce ralentissement, plusieurs méthodes côté serveur sont possibles. Parmi lesquelles, on peut citer l’activation et la paramétrage de compression dès l’exécution sur le serveur. Ceci est possible à l’aide de GZIP ou DEFLATE.



Voici un exemple de compression des fichiers HTML, CSS, JavaScript, Text, XML et fonts de police :

<IfModule mod_deflate.c>

AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml

# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent

</IfModule>

6. Réécrire les URL

LA réécriture d’url est une technique importante dans le web dans le sens elle permet de passer d’une adresse web artificielle (avec des paramètres) vers une adresse plus humaine. Cette technique a plusieurs avantages sur l’ergonomie de l’adresse et le référencement de la page web.

Voici un exemple de ré-écritre d’url d’une page définie par sa langue (lang=$1) et son alias (alias=$2)

RewriteEngine On
RewriteRule ^([a-z]{2})/([a-z0-9\-]+)\.html$ index.php?lang=$1&alias=$2 [NC,L]

Ainsi, la page « https://www.monsite.com/index.php?lang=fr&alias=a-propos » sera remplacée par « https://www.monsite.com/fr/a-propos.html