Fichier htaccess: Optimisation, Redirection, Debug

fichier htaccess
4.8/5 - (21 votes)

Qu’est-ce qu’un fichier htaccess ?

 

Le fichier htaccess est un fichier de configuration qui permet aux utilisateurs de définir certains paramètres pour le serveur web. En modifiant les paramètres dans ce fichier, les utilisateurs peuvent contrôler la façon dont le serveur web répond aux requêtes, ce qui peut être utile pour optimiser les performances ou pour restreindre l’accès à certaines parties du site.

 

Ce fichier peut également être utilisé pour rediriger les internautes vers une autre page lorsqu’ils tentent d’accéder à une page qui n’existe pas / plus. En général, le fichier htaccess se trouve dans le dossier racine du site web, mais il peut également être placé dans des sous-dossiers si nécessaire. Il existe de nombreuses directives différentes qui peuvent être utilisées.

 

 

Les directives principales du fichier htaccess

 

* RewriteRule – Cette directive est utilisée pour définir les règles de réécriture des URL. Les règles de réécriture peuvent être utilisées pour rediriger les utilisateurs d’une URL vers une autre, ou pour modifier la manière dont les URL sont traitées par le serveur.

* Options – La directive Options est permet de contrôler les fonctionnalités qui sont activées ou désactivées pour un répertoire sur le serveur. Par exemple, elle  peut être utilisée pour activer ou désactiver l’utilisation de fichiers .htaccess dans ce répertoire.

* Order – On utilise Order pour spécifier l’ordre dans lequel les directives sont traitées par le serveur. Cela peut être utile pour garantir des priorités, ou pour remplacer l’ordre de traitement par défaut.

* AllowOverride – Est utilisée pour spécifier quelles directives peuvent être remplacées par des fichiers .htaccess. Cette directive est généralement placée dans le fichier de configuration principal du serveur (httpd.conf), plutôt que dans un fichier .htaccess.

 

Ce ne sont là que quelques-unes des directives les plus couramment utilisées. Pour plus d’informations, consultez la documentation d’Apache.

 

 

Comment faire une redirection dans le fichier htaccess ?

 

Pour faire une redirection dans le fichier htaccess, il faut ajouter une ligne de code correspondant à la redirection souhaitée. Par exemple, si vous souhaitez faire une redirection permanente (301), vous devez ajouter la ligne suivante :

Redirect Permanent /oldpage.html http://www.example.com/newpage.html

Il est important de bien spécifier le type de redirection (permanent ou temporaire), car cela influence le comportement du serveur et des moteurs de recherche. Les redirections permanentes sont préférables dans la plupart des cas, car elles indiquent aux moteurs de recherche que la page a définitivement été déplacée et qu’ils doivent mettre à jour leurs index en conséquence.

Les redirections peuvent également être utilisés pour rediriger les utilisateurs d’une partie du site vers une autre, ou pour restreindre l’accès à certaines zones du site.

 

 

Le fichier htaccess pour protéger un répertoire par mot de passe ?

 

Oui, vous pouvez utiliser le fichier htaccess pour protéger par mot de passe un répertoire sur votre serveur. Pour ce faire, vous devez ajouter une ligne de code au fichier htaccess qui ressemble à ceci :

AuthType Basic
AuthName "Zone restreinte"
AuthUserFile /path/to/.htpasswd
Require valid-user

 

Les deux premières lignes précisent le type d’authentification utilisé (Basic) et le nom de la zone restreinte. La troisième ligne indique l’emplacement du fichier .htpasswd qui contient les noms d’utilisateur et les mots de passe des utilisateurs autorisés à accéder au répertoire. La quatrième ligne indique qu’un utilisateur valide est requis pour l’accès.

Admettons que votre identifiant est “Utilisateur” et que votre mot de passe est “motdepasse”, alors, votre fichier .htpasswd devra contenir ceci :

Utilisateur:$apr1$qdpzk5hw$LMpccqh0f.GXw/XOZkWmj0

Vous pouvez générer les fichiers htpasswd sur Hosting Canada.

 

Rediriger un site web de HTTP vers HTTPS grâce au fichier htaccess

 

Oui, vous pouvez utiliser le fichier htaccess pour rediriger votre site Web de HTTP vers HTTPS. Pour ce faire, vous devez ajouter les lignes de code suivantes à votre fichier htaccess :

RewriteEngine On

RewriteCond %{SERVER_PORT} 80

RewriteRule ^(.*)$ https://www.example.com/$1

 

La première ligne active la réécriture moteur.La seconde précise que la règle ne doit être appliquée que si le port du serveur est 80 (HTTP). La dernière ligne redirige toutes les demandes de HTTP vers HTTPS.

Vous pouvez également utiliser cette directive pour rediriger les requêtes vers une url différente en fonction de l’url d’origine. Par exemple, si vous souhaitez rediriger toutes les requêtes provenant de l’ url example.com à www.example.com, vous pouvez utiliser le code suivant :

 

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\

RewriteRule ^(.*)$ https://www.example.com/$1

 

Comme ci-dessus, la première ligne active la réécriture par le moteur. La deuxième spécifie que la règle ne doit être appliquée que si l’url ne commence pas par www et la dernière redirige toutes les requêtes qui ne commencent pas par www vers la version www de l’url. (attention à la syntaxe, en cas d’erreur, le serveur pourrait déclencher une erreur 500)

 

 

Fichier htaccess et problème de permission (chmod)

 

Si vous avez des problèmes de permissions avec un fichier htaccess, cela signifie que vous ne disposez pas des autorisations nécessaires pour modifier les paramètres du fichier. Pour résoudre ce problème, vous devrez changer les permissions du fichier. Pour cela, connectez vous à votre client FTP (FileZilla ou WInSCP), faites un clic droit sur votre fichier .htaccess puis choisissez propriété :

 

chmod htaccess permission écriture et lecture

 

 

Qu’est-ce que le CHMOD ?

Le chmod (“change mode” en anglais) est une commande de systèmes Unix et Unix-like, qui permet de changer les permissions d’accès à des fichiers et des répertoires.

 

Les permissions d’accès sont utilisées pour déterminer qui peut lire, écrire et exécuter un fichier ou un répertoire.

Il y a trois types de permissions :

  1. Lecture (r) qui permet de lire le contenu du fichier.
  2. Écriture (w) qui permet de modifier le contenu du fichier.
  3. Exécution (x) qui permet d’exécuter un fichier ou d’accéder à un répertoire.

 

 

Les permissions sont définies pour trois types d’utilisateurs :

  1. Le propriétaire du fichier ou du répertoire.
  2. Le groupe auquel appartient le fichier ou le répertoire.
  3. Les autres utilisateurs qui ne sont pas le propriétaire ni membres du groupe.

 

Chaque permission peut être autorisée ou interdite pour chaque type d’utilisateur. Les autorisations sont représentées par des lettres (r, w, x), tandis que les interdictions sont représentées par un tiret (-).

Les chiffres que l’on peut voir associés à chmod correspondent en fait à une autre représentation des autorisations, appelée notation octale. Dans cette notation, chaque permission est représentée par un chiffre entre 0 et 7, qui correspond à une combinaison binaire de 3 bits. Ainsi :

 

  • 0 correspond à l’absence de toutes les permissions (—)
  • 1 correspond à la permission d’exécution (–x)
  • 2 correspond à la permission d’écriture (-w-)
  • 3 correspond à la permission d’écriture et d’exécution (-wx)
  • 4 correspond à la permission de lecture (r–)
  • 5 correspond à la permission de lecture et d’exécution (r-x)
  • 6 correspond à la permission de lecture et d’écriture (rw-)
  • 7 correspond à la permission de lecture, d’écriture et d’exécution (rwx)

 

Pour définir les permissions d’un fichier ou d’un répertoire avec chmod, on utilise une combinaison de chiffres pour chaque type d’utilisateur. Par exemple, pour donner toutes les permissions à l’utilisateur propriétaire, et aucune aux autres utilisateurs, on peut utiliser la commande :

chmod 700 nom_du_fichier

Cela correspond à la combinaison rwx pour le propriétaire, et — pour les autres.

 

 

Quel CHMOD choisir pour ses fichiers htaccess?

Généralement, on utilise la permission 644 pour les fichiers .htaccess. Cela signifie que le propriétaire a toutes les permissions (lecture, écriture et exécution), tandis que les utilisateurs du groupe et les autres utilisateurs ont seulement la permission de lecture.

 

 

CHMOD 0000 sur le fichier htaccess

Si vous modifiez le CHMOD de votre fichier .htaccess à 0000, il sera désactivé. Cela signifie que toutes les directives placées dans ce fichier n’auront plus aucun effet. De plus, le chmod du fichier à 0000 l’empêchera également d’être lu par le serveur, de sorte que toute information sensible stockées seront bloquées pour tous, même pour le serveur.

 

Bien que cela puisse sembler une bonne chose, il n’est en fait pas recommandé de le faire sur un serveur de production. Si vous devez désactiver votre fichier .htaccess pour une raison quelconque, il est préférable de le supprimer entièrement. Cela garantira qu’il n’y a pas de chmods accidentels qui pourraient causer des problèmes plus tard sur la route. Vous pouvez aussi le renommer en .htaccess.old pour repartir sur un fichier neuf (à recréer).

 

Chmod 0000 impossible à modifier via le FTP

Si vous avez modifié accidentellement le chmod d’un de vos fichiers avec la valeur 0000, vous pouvez régler le problème en vous connectant à votre serveur via le protocole SFTP (Si il n’est pas activé de base sur votre hébergeur, veillez à le faire). Pour la connexion, c’est exactement les mêmes identifiants que ceux de votre serveur FTP, SFTP est un protocole qui permet le transfert de fichier sécurisé.

 

 

Fichier htaccess qui se régénère tout seul

 

Si vous remarquez qu’un fichier .htaccess revient en continu malgré les suppressions, cela signifie qu’un script permet sa création. Généralement, les scripts permettant cela sont mis en place sur le serveur via des pirates. Votre htaccess contient alors du code qui permet de restreindre certains contenus. Vous pourriez par exemple observer de nombreuses erreurs, la aprtie admin de votre site inaccessible etc …

Comment empêcher le hotlinking d’images avec le fichier htaccess

 

On parle de hotlinking lorsqu’un autre site établit un lien vers une image sur votre site sans votre autorisation. Cela peut entraîner de nombreux problèmes, notamment une baisse du trafic et un vol de bande passante. Pour empêcher cette pratique, vous pouvez ajouter un code à votre fichier .htaccess qui redirigera toutes les tentatives de hotlinking de vos images vers une image de remplacement :

 

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER}!^$ RewriteCond %{HTTP_REFERER}!^http(s) !^http(s)?://(www\.)?exemple.com$

RewriteRule \.(jpg|jpeg|png|gif)$ - (F,NH)

 

Le code ci-dessus remplacera toute image faisant l’objet d’un hotlink par une image “No Hotlinking”. Vous pouvez modifier le nom et l’emplacement de l’image de remplacement en fonction de vos besoins. N’oubliez pas d’enregistrer les modifications dans votre fichier .htaccess avant de quitter.

 

 

Le fichier htaccess pour améliorer les performances de son site web

 

Il existe plusieurs directives que vous pouvez ajouter à votre fichier .htaccess pour améliorer les performances de votre site web en utilisant la mise en cache, la compression de fichiers et d’autres techniques.

 

 

Mise en cache des fichiers statiques

la mise en cache permet de stocker les fichiers statiques tels que les images, les fichiers CSS et JavaScript sur l’ordinateur de l’utilisateur pour une utilisation ultérieure. Cela peut réduire le temps de chargement des pages et améliorer la performance globale du site web.

 

 

exemple de directive pour activer la mise en cache pour ces fichiers :

 

# Activer la mise en cache pour les fichiers statiques

    ExpiresActive On
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType text/javascript "access plus 1 week"
    ExpiresByType application/javascript "access plus 1 week"
    ExpiresByType application/x-javascript "access plus 1 week"
    ExpiresByType image/x-icon "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 year"
    ExpiresDefault "access plus 2 days"

 

Compression de fichiers

la compression de fichiers peut réduire la taille des fichiers CSS, JavaScript et HTML et améliorer le temps de chargement des pages.

# Activer la compression de fichiers

    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript

 

Utilisation de fichiers ETags

les ETags sont des identifiants uniques qui permettent aux navigateurs de vérifier si les fichiers ont été modifiés depuis la dernière visite du site web.

# Activer les ETags
FileETag MTime Size

 

Le fichier htaccess pour améliorer la sécurité de votre site web

En plus d’améliorer les performances de votre site web, le fichier .htaccess peut également être utilisé pour améliorer la sécurité de votre site Web. Par exemple, il est possible de bloquer l’accès à votre site à certaines adresses IP, ce qui peut être utile si quelqu’un vous harcèle. Enfin, il est possible de rediriger les visiteurs vers une autre page s’ils essaient d’accéder à une page qui n’existe pas, ce qui peut aider à éviter les erreurs 404.

 

Création d’une page d’erreur 404 personnalisée avec le fichier .htaccess

Si vous souhaitez créer une page d’erreur 404 personnalisée, vous pouvez le faire avec le fichier .htaccess. Pour ce faire, il suffit de créer un fichier appelé “404.html” ou “404.php” et placez-le dans le répertoire racine de votre site web. Une fois que vous l’avez fait, il vous suffit d’ajouter les lignes suivantes à votre fichier .htaccess :

 

ErrorDocument 404 /404.html

Document d'erreur 404 /404.php

 

La première ligne indique au serveur d’utiliser la page d’erreur 404 personnalisée lorsqu’une erreur 404 se produit. La deuxième ligne fait de même pour les fichiers PHP. Vous pouvez également utiliser cette technique pour créer des pages d’erreur 403 et 500 personnalisées.

Bloquer les visiteurs d’un pays avec le fichier htaccess

 

# Bloquer l'accès depuis la Russie, la Chine et l'Ukraine
GeoIPEnable On
# Russie
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry
# Chine
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
# Ukraine
SetEnvIf GEOIP_COUNTRY_CODE UA BlockCountry
# Indonésie
SetEnvIf GEOIP_COUNTRY_CODE ID BlockCountry
# Inde
SetEnvIf GEOIP_COUNTRY_CODE IN BlockCountry
Deny from env=BlockCountry

 

GeoIPEnable On

Permet d’activer le module de géolocalisation dans Apache, qui utilise une base de données GeoIP pour déterminer la localisation géographique des visiteurs du site web.

 

 

SetEnvIf

Utilisent la fonctionnalité GeoIP pour identifier les visiteurs provenant de certains pays. Dans cet exemple, les visiteurs provenant de Russie (RU), de Chine (CN), d’Ukraine (UA), d’Indonésie (ID) et d’Inde (IN) sont identifiés comme étant dans des pays à bloquer.

 

 

Deny from env=BlockCountry

Utilise la variable d’environnement “BlockCountry” créée par les directives “SetEnvIf” pour interdire l’accès à votre site web à tous les visiteurs provenant des pays à bloquer.