Bonnes pratiques pour un .htaccess de qualité

Bonnes pratiques pour un .htaccess de qualité

Les fichiers .htaccess sont des fichiers de configuration des serveurs web Apache. Ils sont placés dans différents répertoires de votre serveur, permettant de modifier les droits d’accès, les redirections, les messages d’erreur, … Ces fichiers sont indispensables pour sécuriser votre serveur et site web.

Comme vous avez pu voir, ce fichier est au coeur de votre serveur web et va réagir suivant les actions effectuées par vos visiteurs.

J’ai donc compilés certaines astuces pour optimiser votre site de plusieurs manières.

Forcer l’ajout de slash en fin d’url

Il peut être utile d’ajout un slash à la fin de ses url, pour améliorer son référencement par exemple. Le petit snippet suivant va vous permettre de le faire :

<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_URI} /+[^\.]+$
 RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
</IfModule>

 

Empêcher le hotlinking

Le HotLinking, pratique visant à utiliser vos images sur d’autres sites, peut s’avérer gênant et gaspiller beaucoup de votre bande passante. Ce snippet vous permettra de le bloquer et de rediriger vers une image définie en ligne 6 :

RewriteEngine On
#Replace ?mysite\.com/ with your blog url
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your "don't hotlink" image url
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

 

Rediriger les appareils mobiles

Si vote site n’est pas web responsive, c’est à dire qu’il adapte son web design à l’internaute, son matériel et au logiciel qu’il utilise pour accéder à votre site, il peut être très utile de rediriger le visiteur vers une version mobile du site.

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/m/.*$
RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml|application/vnd.wap.xhtml+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT}  "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
#------------- The line below excludes the iPad
RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$
#-------------
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] #*SEE NOTE BELOW
RewriteRule ^(.*)$ /m/ [L,R=302]

 

Forcer le téléchargement d’un type de fichier spécifique

Pour plusieurs raisons, vous pouvez vouloir forcer le téléchargement de plusieurs types de fichiers, comme des mp3 ou des pdf, afin que l’internaute ne le lise pas en ligne mais y ai accès sur son poste. Avec ce petit snippet, vous communiquerez au navigateur qu’il ne doit pas interpréter le fichier et le lire, mais plutôt le télécharger.

<Files *.pdf>
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>
<Files *.mp3>
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>

 

 Accélérer le chargement de votre site avec du .htaccess caching

C’est sûrement le snippet le pus pratique de cette liste. En utilisant la mise en cache de certains fichiers, vous allez considérablement augmenter le chargement de votre site web. Une pratique à avoir de toute urgence dans votre toolbox.

# 1 YEAR
<FilesMatch "\.(ico|pdf|flv)$">
Header set Cache-Control "max-age=29030400, public"
</FilesMatch>
# 1 WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# 2 DAYS
<FilesMatch "\.(xml|txt|css|js)$">
Header set Cache-Control "max-age=172800, proxy-revalidate"
</FilesMatch>
# 1 MIN
<FilesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=60, private, proxy-revalidate"
</FilesMatch>

 

Bloquer les spams sur votre site WordPress

Marre des spammeurs sur vote WordPress ? Bien sûr, le plugin Akismet est très pratique et bloque la plupart des bots, mais votre fichier .htaccess peut aussi bloquer l’accès au fichier wp-comment-post.php. Vous pouvez utiliser ce snippet tel quel sur votre blog WordPress.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomainname.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

 

Configurer votre site pour lire des vidéos HTML5

HTML5 apporte son lot de nouveautés dans le monde du développement web, et autant s’en servir. Parmi celles ci, vous pourriez vouloir placer un lecteur de vidéos HTML5, plutôt que d’utiliser la technologie Flash (et je vous comprends). Mais pour cela, il faut configurer votre serveur pour interpréter les dernières technologies HTML5.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
AddType video/ogg .ogv
AddType video/ogg .ogg
AddType video/mp4 .mp4
AddType video/webm .webm
AddType application/x-shockwave-flash swf

 

Mettre en place des Log de vos erreurs PHP

Plutôt que d’afficher vos erreurs PHP directement dans la page (et aux yeux des hackeurs), ce petit snippet vous permet de les insérer dans un fichier de log.

# display no errs to user
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
# log to file
php_flag log_errors on
php_value error_log /location/to/php_error.log

 

Exécuter du PHP dans vos fichier Javascript

Lorsque vous développez beaucoup en Javascript, il peut être utile d’y insérer du PHP, pour, par exemple, faire des appels à vos base de données. Ce snippet va permettre l’utilisation de PHP à l’intérieur de vos fichiers .js.

AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>

 

 

1








Jeff

About the Author

Jeff est Consultant Maitrise et Développement .NET/PHP, avec de solides connaissances en Javascript (jQuery) et HTML5.

Discussion

Add a Comment

  1. Jocelyn Fiat  février 23, 2012