1.- Qu'est-ce qu'un fichier .htaccess ?
Le fichier .htaccess (hypertext access) est le nom par défaut du fichier de configuration au niveau des répertoires d'Apache. Il est utilisé pour personnaliser la configuration des directives et des paramètres définis dans le fichier de configuration principal de l'hébergement.
2.- Comment créer et où placer un fichier .htaccess ?
Pour créer un fichier .htaccess, ouvrez un éditeur de texte et saisissez le code requis. Enregistrez le fichier en tant que fichier texte (.txt), par exemple "htaccess_file.txt", et
téléchargez-le via FTP dans le dossier où il doit être utilisé. Une fois sur le serveur, renommez le fichier de "htaccess_file.txt" en ".htaccess".
Important : si vous avez déjà un fichier .htaccess dans votre hébergement, vous pouvez l'utiliser pour appliquer ces configurations. Si vous avez récemment effectué une
migration de domaine, vous devrez peut-être également apporter des modifications.
Le fichier .htaccess doit être placé à l'intérieur du dossier où vous souhaitez qu'il prenne effet. Par exemple, si vous souhaitez protéger par mot de passe un dossier appelé "private", placez le fichier .htaccess à l'intérieur du dossier "private".
Le fichier .htaccess a une grande variété d'utilisations et d'utilitaires qui peuvent être très utiles sur un site web. Dans le tutoriel suivant, nous montrons quelques-unes des fonctions les plus couramment utilisées.
3.- Utilitaires courants du .htaccess
Le fichier .htaccess possède un grand nombre d'utilitaires. Dans ce tutoriel, nous montrons quelques-uns des plus courants et comment les configurer :
Rediriger un sous-domaine vers un sous-dossier Dans certaines situations, vous pouvez avoir besoin de créer une redirection vers le dossier d'un sous-domaine en utilisant .htaccess. Si vous souhaitez que le sous-domaine "test.exemple.org", par exemple, pointe vers le dossier "exemple.org/test", vous devez ajouter les directives suivantes au fichier .htaccess :
RewriteEngine on
RewriteCond %{HTTP_HOST} ^test.exemple.com$
RewriteCond %{REQUEST_URI} !^/test/
RewriteRule (.*) /test/$1
La première ligne active le moteur de réécriture et ne doit être spécifiée que s'il n'a pas été activé précédemment.
Les troisième et quatrième lignes effectuent la redirection.
La deuxième ligne empêche la redirection de s'appliquer à nouveau si la requête se trouve déjà dans le dossier "test". Ceci est nécessaire pour éviter les erreurs et les boucles, car le fichier .htaccess est exécuté à nouveau lors de la redirection de la requête vers le dossier "test".
Rediriger un site web en utilisant des redirections 301, 302 Si, lors de l'accès au site web, vous souhaitez rediriger la page vers une autre :
(Dans "R=301", vous pouvez spécifier la méthode de redirection souhaitée : 301, 302, etc.)
Rediriger un site web vers un sous-dossier Si votre site web se trouve dans un sous-dossier différent du dossier "web", vous pouvez rediriger toutes les requêtes vers ce sous-dossier :
RewriteEngine onRewriteCond %{HTTP_HOST} ^exemple\.org$RewriteRule (.*) http://www.exemple.org/$1 [R=301,L]RewriteRule ^$ dossier [L]
Où :
exemple\.org pourrait être, par exemple, cdmon.com.
Le dossier pourrait être, par exemple, "wordpress".
Vous pouvez configurer l'accès afin que, si pour une raison quelconque vous souhaitez refuser l'accès à tous les utilisateurs ou n'autoriser l'accès qu'à un groupe spécifique d'adresses IP, vous puissiez le faire.
Require all denied
Require ip 124.34.48.165
Require ip 102.54.68.123
Les IP 124.34.48.165 et 102.54.68.123 sont les IP qui auront accès au site web.
Require all granted
Require not ip 145.186.14.122
Require not ip 124.15
L'IP 145.186.14.122 et le réseau 124.15.x.x n'auront pas accès au site web.
Contrôle d'accès aux dossiers Une utilisation très courante du .htaccess est de restreindre l'accès à certains dossiers. Vous pouvez souhaiter désactiver complètement l'accès à un dossier, par exemple un dossier contenant des bibliothèques de programmation qui sont incluses dans les fichiers principaux. Dans ce cas, seuls les fichiers principaux pourront y accéder via le système de fichiers, mais ils ne seront pas accessibles via le web. Il suffit de créer un fichier .htaccess dans ce dossier contenant le code suivant :
#refuser tout accès
Require all denied
#refuser tout accès
Require all denied
Require ip 212.267.98.14
Require ip 192.168.0.0/24
Require all denied
Vous pouvez également utiliser .htaccess pour afficher le contenu d'un dossier sous forme de liste de répertoires.
Options +Indexes
Options +Indexes
IndexOptions -FancyIndexing
IndexIgnore*
Si vous souhaitez que votre site web soit toujours affiché sans www, ajoutez le code suivant au fichier .htaccess :
RewriteEngine OnRewriteCond %{REQUEST_URI} !^/(robots\.txt|favicon\.ico|sitemap\.xml)$RewriteCond %{HTTP_HOST} !^exemple\.org$ [NC]RewriteRule ^(.*)$ http://exemple.org/$1 [R=301,L]
Inversement, pour toujours afficher le site web avec www :
RewriteEngine OnRewriteCond %{REQUEST_URI} !^/(robots\.txt|favicon\.ico|sitemap\.xml)$RewriteCond %{HTTP_HOST} !^www\.exemple\.org$ [NC]RewriteRule ^(.*)$ http://www.exemple.org/$1 [R=301,L]
Où :
exemple.org pourrait être, par exemple, cdmon.com
Redirection de site web optimisée pour le référencement Si vous avez transféré des noms de domaine ou si vous souhaitez rediriger vers une page spécifique sans affecter les résultats des moteurs de recherche comme Google, vous pouvez utiliser le code suivant :
Si vous souhaitez que lorsqu'une personne essaie d'accéder à un fichier spécifique, elle soit redirigée vers un autre fichier, vous pouvez utiliser la directive "redirect" :
Rediriger vers une connexion HTTPS sécurisée Si vous souhaitez rediriger l'ensemble de votre site vers une connexion sécurisée (HTTPS), cela est très utile si, par exemple, vous disposez d'un certificat SSL et souhaitez l'utiliser.
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Rediriger les utilisateurs vers HTTPS pour un dossier spécifique Si vous souhaitez rediriger uniquement un dossier spécifique vers une connexion sécurisée (HTTPS) au lieu de tout le site — par exemple, si vous avez une boutique dans un dossier séparé — vous devez utiliser le code suivant :
RewriteEngine OnRewriteCond %{SERVER_PORT} 80RewriteCond %{REQUEST_URI} nom_dossierRewriteRule ^(.*)$ https://www.exemple.org/$1 [R,L]
Le hotlinking consiste à créer des liens directs vers des fichiers — généralement des images et des vidéos — qui appartiennent à un autre site web. Cette pratique consomme la bande passante du site d'origine qui héberge l'image. Pour empêcher d'autres sites de "voler" votre bande passante, vous pouvez configurer .htaccess pour bloquer le hotlinking.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?exemple\.org/.*$ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ [L]
La dernière ligne est utilisée pour indiquer quels types de contenu (en fonction des extensions de fichiers) vous ne souhaitez pas autoriser en hotlinking :
RewriteRule .*\.(jpe?g|gif|bmp|png)$ [L]
Alternativement, vous pouvez utiliser cette autre règle, qui affiche également une image d'avertissement ("no_steal_bandwidth.gif", que vous devez avoir créée au préalable) pour indiquer que l'image est chargée depuis votre site web.
RewriteEngine onRewriteCond %{REQUEST_URI} !^/IMG/no_steal_bandwidth.gif$RewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http://(www\.)?exemple\.org/.*$ [NC]RewriteRule .*(gif|jpe?g|png|bmp)$ http://exemple.org/IMG/no_steal_bandwidth.gif [NC,R,L]
Dans la dernière ligne, spécifiez les extensions de fichiers que vous souhaitez bloquer en hotlinking et indiquez l'image d'avertissement que vous souhaitez afficher.
Changer la page par défaut Vous pouvez faire en sorte que la page d'index par défaut de votre site soit autre chose que le célèbre "index". Ici, "about.html" est défini comme page d'accueil :
#Utiliser une page d'index par défaut alternative
DirectoryIndex about.html
Forcer la mise en cache du site Le code suivant n'augmente pas directement la vitesse de chargement globale du site, mais il permet de charger plus rapidement lorsque le même utilisateur revient en envoyant un statut 304 pour les éléments qui n'ont pas été modifiés. Vous pouvez modifier la fréquence de mise en cache en modifiant le nombre de secondes (dans cet exemple, il est réglé sur une fois par jour) :
FileETag MTime Size
ExpiresActive on
ExpiresDefault "access plus 86400 seconds"
Améliorer la compatibilité des caractères Cette option s'adresse à ceux qui n'utilisent pas un jeu de caractères standard reconnu par le serveur. Avec ce paramètre, la célèbre erreur 500 est évitée.
AddDefaultCharset utf-8
Créer des URL optimisées pour le référencement Une URL optimisée pour le référencement consiste à masquer une URL pleine de paramètres pour la rendre plus propre et plus élégante, et pour aider à obtenir un meilleur classement dans les moteurs de recherche. Selon la façon dont le site web est programmé, le code à utiliser variera.
Exemple 1 :
Par exemple, "dossier/fichier.php?id=120&langue=fr" n'est pas une URL optimisée pour le référencement, elle doit donc être transformée en "dossier/fichier/120/fr", ce qui est plus élégant et aide au positionnement dans les moteurs de recherche. C'est une URL optimisée pour le référencement. Avec le fichier .htaccess, vous pouvez effectuer ce "masquage" de l'URL.
Vous avez un dossier sur votre site web qui contient un fichier qui reçoit des paramètres.
exemple.org/dossier/fichier.php?id=25
Ensuite, à l'intérieur de ce dossier, vous devez créer un fichier .htaccess avec le code suivant :
Options +FollowSymLinks
RewriteEngine on
RewriteRule dossier/(.*)/(.*).php$ /dossier/fichier.php?id=$1
La dernière ligne est celle où le changement est effectué.
(.*) sera le paramètre que vous passez, $1.
(.*).php$ sera le nom du fichier utilisé pour "décorer" l'URL.
Une fois le fichier .htaccess créé, dans le lien de votre site web, vous devez utiliser :
Lien vers le fichier 25
Par conséquent, "dossier/25/nom-fichier.php" sera identique à "/dossier/fichier.php?id=25".
Exemple 2 :
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ /index.php?parametre=$1 [QSA,L]
Exemple 3 :
Un autre exemple de conversion vers des URL optimisées pour le référencement.
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)/page-([0-9]+)$ /index.php?parametre=$1&paginator=$1 [QSA,L]
Exemple 4 :
Code utilisé par WordPress pour créer des URL optimisées pour le référencement.
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]