configuration htaccess sécurrité

Tout sur le .htaccess : de la sécurité à l’optimisation du cache en passant par les redirections

Le fichier htaccess vous permet de rajouter de la sécurité, il augmente la vitesse de chargement du site, permet de limiter le spam, créer des redirections… Bref! C’est un peu le couteau Suisse pour votre site web! Nous allons découvrir ensemble quelques codes pour votre site.

Qu’est ce que le .htaccess exactement?

C’est un fichier de configuration qui va donner des directives de fonctionnements à votre serveur apache (logiciel utilisé par votre serveur pour fonctionner).

Le fichier .htaccess va pouvoir donner des directives à tous les dossiers se trouvant à son niveau ainsi qu’à tous les sous répertoire. Mais il est également possible d’avoir un autre fichier .htaccess dans un sous dossier, il surchargera dans ce cas le .htaccess du niveau supérieur.

Exemple:

Dans l’image ci dessous. Le .htaccess du « Dossier 1 » à l’instruction interdisant l’accès. On ne peut donc accéder à aucun élément / dossier se situant dans le « Dossier 1 ».

Mais si le .htaccess du « Dossier 2 » autorise l’accès, dans ce cas, tout ce qui est contenu dans le « Dossier 2 »  est accessible.

hierarchie htaccess apache

Quelques précautions à prendre avant de modifier votre fichier .htaccess

Si vous faites une erreur dans votre fichier, il se peut que vous vous retrouviez avec une erreur 500, et donc que votre site ne soit plus accessible. Nous vous recommandons donc de faire une copie de votre fichier avant toute modifications (directement sur votre serveur ou sur votre ordinateur).

Parfois certains hébergeurs refusent l’utilisations de tel ou tel code, consultez la documentation de votre hébergement, ou contactez les, ils vous proposerons peut être une alternative.

Comment ajouter des commentaires pour s’y retrouver plus facilement?

L’ajout de commentaire dans votre fichier de configuration, se fait simplement avec l’ajout d’un « # » avant votre commentaire.

# Ceci est un commentaire

 

Quelques exemples de codes pour le .htaccess

Rentrons maintenant dans le vif du sujet et découvrons quelques codes qui pourront vous être utile pour votre site internet.

Comment effectuer une redirection dans le .htaccess?

Pour de nombreuses raison il est nécessaire de faire des redirections. C’est le cas notamment pour éviter un problème de duplicate contente lors du passage d’un site de http à https, ou alors lors ce que vous avez des erreurs. Vous pouvez le gérer directement depuis votre fichier .htaccess. Pour cela il suffit d’ajouter le code suivant :

# Redirection d'une page quelconque
Redirect 301 /oldepage/ http://www.monsite.fr/newspage

Vous pouvez également rediriger un site sans « www » vers un site avec « www » :

# Redirection du site sans www vers www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^monsite.com [NC]
RewriteRule ^(.*)$ http://www.monsite.com/$1 [L,R=301]

 

Comment ajouter de la sécurité grâce au .htaccess?

Par défaut les dossier de votre site sont visible, il est possible de désactiver leur affichage avec :

# Désactiver l'affichage du contenu des répertoires
Options All -Indexes

Si vous remarquez que votre site se fait « attaquer » par une adresse IP fixe, il est possible de la bloquer (remplacez xxx.xxx.xxx.xxx par l’ip) :

# Bannir une adresse IP
<Limit GET POST>
order allow,deny
deny from xxx.xxx.xxx.xxx
allow from all
</Limit>

Comment accélérer la vitesse de chargement de mon site?

Afin d’accélérer la vitesse de chargement du site, vous pouvez régler la mise en cache, ainsi l’utilisateur ne chargera pas plusieurs fois un fichier s’il le possède déjà dans son cache.

# Mise en cache des fichiers dans le navigateur
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"

ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/pdf "access plus 0 seconds"

ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/atom+xml "access plus 1 hour"

ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType application/x-font-woff2 "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"

ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"

ExpiresByType video/ogg "access plus 1 month"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"

ExpiresByType text/css "access plus 6 month"
ExpiresByType application/javascript "access plus 6 month"

ExpiresByType application/x-shockwave-flash "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 week"

</IfModule>

# En-têtes
Header unset ETag
FileETag None

<ifModule mod_headers.c>  
<filesMatch "\.(ico|jpe?g|png|gif|swf)$">  
    Header set Cache-Control "public"  
</filesMatch>  
<filesMatch "\.(css)$">  
    Header set Cache-Control "public"  
</filesMatch>  
<filesMatch "\.(js)$">  
    Header set Cache-Control "private"  
</filesMatch>  
<filesMatch "\.(x?html?|php)$">  
    Header set Cache-Control "private, must-revalidate"
</filesMatch>
</ifModule>

 

Il existe bien d’autres fonctions que vous pourrez retrouver directement dans la documentation d’Apache, ou alors dans le codex WordPress (si votre site est fait avec ce dernier).

32

Pas de commentaire

Ecrire une réponse