Warning: Declaration of Walker_Comment2::start_lvl(&$output, $depth, $args) should be compatible with Walker::start_lvl(&$output, $depth = 0, $args = Array) in /homepages/31/d212983492/htdocs/creetik/blog/wp-content/themes/redtime/functions.php on line 146

Warning: Declaration of Walker_Comment2::end_lvl(&$output, $depth, $args) should be compatible with Walker::end_lvl(&$output, $depth = 0, $args = Array) in /homepages/31/d212983492/htdocs/creetik/blog/wp-content/themes/redtime/functions.php on line 146

Warning: Declaration of Walker_Comment2::start_el(&$output, $comment, $depth, $args) should be compatible with Walker::start_el(&$output, $object, $depth = 0, $args = Array, $current_object_id = 0) in /homepages/31/d212983492/htdocs/creetik/blog/wp-content/themes/redtime/functions.php on line 146

Warning: Declaration of Walker_Comment2::end_el(&$output, $comment, $depth, $args) should be compatible with Walker::end_el(&$output, $object, $depth = 0, $args = Array) in /homepages/31/d212983492/htdocs/creetik/blog/wp-content/themes/redtime/functions.php on line 146
Creetik Blog » 2011 » juillet

Featured Post

[CSS] – Les helpers

Pour ce troisième volet des conseils Creetik, nous allons aborder une notion souvent méconnue mais qui s’avère très utile afin de maintenir le code. Qu’est ce qu’un Helper Css ? Les helpers Css sont des classes CSS dites « classiques » ayant pour particularité...

Read More

[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.