Configuration de fichier .htaccess

htaccess

.htaccess, c’est le fichier de configuration du serveur HTTP Apache. Vous pouvez utiliser ce fichier pour gérer la sécurité de votre serveur Web. Tous les CMS, comme WordPress et Joomla utilisent le fichier .htaccess pour créer une structure d’URL conviviale pour le référencement. Vous pouvez également utiliser ce fichier pour gérer les autorisations d’accès aux dossiers du serveur et plus encore.
Je vais vous expliquer comment utiliser ce fichier sur l’exemple du site WordPress que nous avons créé ici
Pour modifier ce fichier, vous devez vous rendre dans le dossier racine de votre site (d’habitude dans le dossier /var/www/) . Par exemple, voici le fichier .htaccess dans le site1.com ou on a installé WordPress

Pour se rendre dans le dossier racine de votre site on va utiliser les privilèges d’administration root à partir d’une session d’utilisateur normal. Pour faire cela il faut exécuter:

sudo su

On va aller dans le dossier racine de site1.com

cd /var/www/site1.com/public_html

Pour éditer .htaccess on va utiliser console et Vim ou Nano. Si vous utilisez web hosting, vous pouvez aussi utiliser le panel d’administration, par exemple cPanel ou Webmin.

Protégez le fichier wp-config.php

Le fichier WordPress wp-config.php contient des informations très importantes sur votre installation, notamment les détails de votre base de données, le préfixe de table et les clés secrètes. Pour protéger ce fichier d’un accès non autorisé il faut ajouter dans .htaccess:

<files wp-config.php>
order allow,deny
deny from all
</files>

Vous pouvez également fermer l’accès à toutes les IPs sauf si votre fournisseur de services Internet vous fournit une adresse IP statique!, alors le code sera comme ceci :

<Files "wp-login.php">
Order deny,allow
Deny from All
Allow from xxx.xxx.xx.xxx
</Files>

xxx.xxx.xx.xxx cela votre adresse IP public.
C’est la protection la plus simple et la plus fiable contre les attaques par force brute sur votre site, mais faites attention, chaque fois que votre adresse IP publique change, vous devez la modifier dans le fichier .htaccess.

Protégez votre espace d’administration WordPress (wp-admin)

En utilisant .htaccess on peut protéger la partie administrative du site WordPress. Pour ce faire, vous devez soit créer un fichier soit utiliser le fichier déjà créé dans le dossier /wp-admin/.htaccess

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
# whitelist multiple IP addresses
allow from xx.xx.xx.xxx
allow from xx.xx.xx.xxx
</LIMIT>

Remplacez xx.xx.xx.xxx sur l’adresse IP à partir de laquelle vous entrerez dans la partie administrative du site, chaque fois que votre adresse IP publique change, vous devez la modifier dans le fichier .htaccess. Vous pouvez également saisir l’adresse IP de votre VPN

Désactiver la navigation dans les répertoires

Habituellement, dans WordPress, vous pouvez consulter les répertoires du site qui créent une vulnérabilité de votre site:

Pour désactiver l’affichage des fichiers dans le répertoire, ajoutez la ligne suivante dans .htaccess.

Options -Indexes

Et voilà, maintenant cela donne error 403:

Redirection

La situation où des visiteurs accèdent à la page des erreurs, par exemple, lorsqu’il vous avez interdit de visualiser le contenu du dossier ou d’accéder à la partie administrative du site, n’est pas très agréable. Par conséquent, vous pouvez configurer la redirection en utilisant de fichier .htaccess.
Par exemple, dans mon blogue j’utilise redirection pour rediriger les visiteurs de la page d’erreurs vers la page d’accueil du site

Options -Indexes
ErrorDocument 404 https://oleks.ca/
ErrorDocument 403 https://oleks.ca/

Si vous changez de site, vous pouvez changer les liens des anciennes pages vers les nouvelles afin de ne pas perdre de visiteurs

Pour faire la redirection permanente:

Redirect 301 /oldpage.html http://www.yourwebsite.com/newpage.html

Pour faire la redirection temporaire:

Redirect 302 /oldpage.html http://www.yourwebsite.com/newpage.html

Rediriger une présence Web de HTTP vers HTTPS

Ceux qui utilisent des certificats SSL pour leur domaine ont la possibilité de rediriger le domaine vers le HTTPS crypté avec la commande suivante :

# activate HTTPS
RewriteEngine On
RewriteCond %{Server_Port} !=443
RewriteRule ^(.*)$ http://yourdomain.tld/$1 [R=301,L]

Interdire les images d’être hotlinked

Le hotlinking permet à une tierce personne de lier des médias à son site Web (en particulier des images) qui sont enregistrés sur un hôte différent. Cela augmente le volume de données pour le propriétaire réel. La commande suivante permet aux utilisateurs d’interdire que certains types de fichiers sur leur propre formulaire de site Web soient liés :

# disable hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://your-webhosting-domain/.*$ [NC] [OR]
RewriteCond %{HTTP_REFERER} !^http://www.your-webhosting-domain/.*$ [NC] [OR]
RewriteRule .*\.(gif|GIF|jpg|JPG|bmp|BMP|wav|mp3|wmv|avi|mpeg)$ - [F]

 

Réécrire l’IP au domaine

Pour faire des redirections de votre adresse IP vers votre domaine (c’est préférable de masquer l’adresse IP de votre site pour des raisons de sécurité) vous pouvez ajouter le code suivant au fichier .htaccess à la racine de votre site.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$
RewriteRule ^(.*)$ https://www.your-webhosting-domain/$1 [L,R=301]

Protégez /wp-content/

wp-content est le dossier qui contient tous les fichiers importants de vos thèmes, plugins, médias et fichiers mis en cache. Afin de protéger ce répertoire des pirates et des spammeurs, vous devez créer dans ce dossier le fichier .htaccess avec le contenu suivant:

Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
Allow from all
</Files>

Disable PHP Execution

Pour protéger les dossiers où vous n’avez pas besoin d’exécuter du code PHP vous pouvez interdire d’y exécuter du code PHP. Créez un fichier .htaccess dans un dossier dans lequel vous ne souhaitez pas exécuter des scripts PHP et ajoutez-y le contenu suivant:

<Files *.php>
deny from all
</Files>

Protection de .htaccess

Pour augmenter la protection de votre serveur web, vous pouvez masquer la visualisation du fichier .htaccess sur votre site, pour cela nous interdisons la visualisation de tout fichier commençant par “.hta”:

<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>

Si nos changement dans .htaccessne ne fonctionne pas:

Dans ce cas-là il faut vérifier configuration apache2 generale dans apache2.conf:

vim /etc/apache2/apache2.conf

et modifier le texte du répertoire comme ceci :

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Apres il faut redemarrer Apache:

service apache2 restart

Règles de base pour travailler avec .htaccess :

Pour mieux comprendre comment travailler avec ce fichier, vous devez comprendre les règles de base. Chaque commande commence sur une nouvelle ligne. Vous pouvez laisser des commentaires dans le fichier (par exemple, pour que d’autres optimiseurs ou développeurs comprennent à quoi sert telle ou telle directive). Pour laisser un commentaire, vous devez mettre le signe #. Tout le contenu de la ligne après ce caractère est ignoré par le serveur et n’est pas traité comme une commande.

Une fois le fichier enregistré, les modifications prennent effet immédiatement. Vous n’avez pas besoin de redémarrer le serveur.

Caractères spéciaux de base :

^ – indique le début d’une ligne ;
$ – fin de ligne ;
– désigne n’importe quel caractère (à l’exception du caractère de fin de ligne) ;
* – n’importe quel nombre de n’importe quel caractère ;
? – un caractère spécifique ;
[0-9] – remplace n’importe quel chiffre,
[a-z] – n’importe quelle lettre de l’alphabet latin ;
| – le symbole “ou”, soit un groupe soit un autre est sélectionné ;
() – utilisé pour sélectionner des groupes de caractères.

Variables fréquemment utilisées :
% {HTTP_USER_AGENT} – contient des informations sur le navigateur et le système d’exploitation de l’utilisateur (le champ User-agent transmis par le navigateur lors de l’accès au site) ;
% {REMOTE_ADDR} – adresse IP de l’utilisateur ;
% {REQUEST_URI} – URI demandé ;
% {QUERY_STRING} – paramètres de requête après le signe ?.

La syntaxe complète et toutes les fonctionnalités du fichier sont dans la documentation officielle.