[ToolBox] +10 snippets .htaccess
Posted by Webmaster | Posted in Conseils Creetik, Ergonomie, html, outils | Posted on 03-07-2011
0
Le fichier .htaccess est LE fichier qu’il faut savoir manipuler pour contrôler assez facilement le serveur Web Apache. Creetik partage avec vous une suite de tweaks concernant ce fichier.
Petit rappel : Le fichier .htaccess sert beaucoup pour configurer le serveur Apache sans trop rentrer dans le code des fichiers de configuration. Vous pouvez notamment protéger l’accès à un répertoire/fichier par un mot de passe, définir des pages 404 personnalisées, mettre son site en maintenance, etc. Ce n’est pas tout et nous allons détailler les méthodes les plus accessibles aux webmasters pour les mettre en place simplement et rapidement.
Avant toute modification du fichier .htaccess, faites une sauvegarde. Ce fichier reste sensible, et on est toujours heureux d’avoir une sauvegarde à portée de click pour revenir à un état stable et fonctionnel.
1. Activer la compression Gzip
Activez la compression gzip et réduisez la bande passante consommée pour l’affichage de votre site jusqu’à 70%. C’est le mode le plus efficace de compression serveur.
# BEGIN GZIP AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript # END GZIP
2. Protection contre le hotlinking
Le hotlinking permet d’afficher du contenu hébergé sur votre site internet depuis un autre site. La problématique se situe au niveau de la bande passante, car c’est bien la votre qui sera consommée. Le fichier .htaccess permet de bloquer cet appel à distance.
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]
3. Des pages personnalisées pour les erreurs HTTP
Les erreurs HTTP 404, 403, 500, etc. sont personnalisables directement depuis le fichier .htaccess. Voici quelque exemples
ErrorDocument 400 /errors/badrequest.html ErrorDocument 401 /errors/authreqd.html ErrorDocument 403 /errors/forbid.html ErrorDocument 404 /errors/notfound.html ErrorDocument 500 /errors/serverr.html
4. Forcer le téléchargement de certains type de fichiers
Il est parfois utile de forcer le téléchargement de certains fichiers, comme les PDF trop lourds pour etre affichés ou les fichiers vidéos AVI, MPEG, etc qui se lancent dans des players pas adaptés.
AddType application/octet-stream .pdf AddType application/octet-stream .avi AddType application/octet-stream .mpg AddType application/octet-stream .mov AddType application/octet-stream .xls AddType application/octet-stream .doc
5. Supprimer l’extension de vos fichiers dans l’url
Ce snippet réécrit l’url pour enlever l’extension des fichiers dans l’url.
http://www.example.com/about.php affichera http://www.example.com/about
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteRule ^(.*)$ $1.html # Replace html with your file extension, eg: php, htm, asp
6. Forcer la suppression des www
Pour des questions de SEO, vous pourriez avoir besoin de supprimer les www de votre nom de domaine.
http://www.example.com sera affiché http://example.com
RewriteEngine On RewriteCond %{HTTP_HOST} !^your-site.com$ [NC] RewriteRule ^(.*)$ http://your-site.com/$1 [L,R=301]
7. Récupérer les logs d’erreurs PHP
Grâce à ce snippet, vous allez pouvoir récupérer toutes les erreurs PHP, la seule contrainte de cette solution est de créer d’abord un fichier log sur votre serveur web
# 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
8. Mise en maintenance d’un site internet
Mettez en maintenance l’ensemble de votre site sans risque. Ajoutez ce snippet dans le .htaccess et configurez le pour autoriser les adresses IP nécessaires.
RewriteEngine on # Maintenance Redirection # Replace 555\.555\.555\.555 with your own IP address # Uncomment first conditional to turn off the redirection # RewriteCond %{REQUEST_URI} ^$a RewriteCond %{REQUEST_URI} !maintenance.html RewriteCond %{REQUEST_FILENAME} !(styles|images).+$ RewriteCond %{REMOTE_ADDR} !^555\.555\.555\.555$ RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$ RewriteRule (.*) /maintenance.html [R,L]
9. Protéger un dossier par mot de passe
La protection des dossier avec le .htaccess est très efficace. Il faut faudra créer un second fichier .htpasswd contenant les infos d’identification login:motdepasse. Notez que tous les sous-dossier sont concernés par cette restriction d’accès.
AuthType Basic AuthName "This Area is Password Protected" AuthUserFile /full/path/to/.htpasswd Require valid-user
10. Détection Iphone
La détection des userAgent dans le .htaccess permet de rediriger vers la bonne version du site, suivant le support utilisé. Pour filtrer un accès android, modifiez les valeurs correspondantes.
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} iPhone RewriteRule .* http://iphone.example.com/ [R]
11. Détection Ipad
Si vous avez besoin de faire une version spécifique de votre site pour les iPad (sans flash par exemple) vous pouvez utiliser le snipper suivant.
RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$ RewriteRule ^(.*)$ http://ipad.yourdomain.com [R=301]
12. Redirection permanente (301)
Pour ajouter une redirection permanente d’un nom de domaine sur un autre, utilisez le snippet suivant. Bien entendu ce snippet fonctionne également pour les autres erreur HTTP, il faut simplement l’adapter à votre cas de figure.
Options +FollowSymLinks RewriteEngine on #singlePage RewriteRule ^oldpage.php http://example.com/newpage.html [R=301,L] #entireSite Redirect 301 / http://newsite.com/
13. Bloquez l’accès à vos dossier sensibles
Avec l’utilisation des CMS (et même sans), vous pouvez vous trouver avec des fichiers de configuration sur votre site, il vaut mieux généralement boucler le secteur si vous le voulez pas vous retrouver un jour avec une page blanche à la place de votre site avec un petit message toujours sympathique : « I’ve fucked ». Ce Snippet est à placer dans le dossier que vous souhaiter bloquer.
Deny from all
Ce post centralise la plupart des snippets utilisées par les webmasters pour configurer simplement le serveur Apache. Si vous pensez qu’il manque un snippet essentiel, ou qu’une erreur s’est glissée dans cette page, n’hésitez pas à laisser un commentaire pour me prévenir.
Cet article est largement inspiré de plusieurs sources, catswhocode.com, des snippets de css-tricks et de plusieurs forums. Merci à eux.