”.htaccess” est un simple fichier texte composé de commandes, déposé sur votre site. Il permet de personnaliser le serveur web Apache dynamiquement, et par répertoire.
Les valeurs de configurations sont héritées à travers les répertoires. Les applications courantes du réglage d'un fichier htaccess sont le basculement entre PHP4 et PHP5, la protection d'une partie du site, la redirection d'un site web vers un autre ou la personnalisation des messages d'erreur. Une fois sur le serveur, son nom doit être .htaccess, avec un point devant.
Ce fichier est a créer avec soin car en cas de maladresse il provoquera une Erreur 500 sur le serveur et bloquera l'accès à vos pages web. Dans ce cas, vérifier la syntaxe et vérifier que vous l'avez bien transféré par FTP en mode texte et non en mode binaire.
Cette fonctionalité vous permet de remplacer (entre autres) le message de type 404 (Not found)
par un texte plus amical ou par une redirection sur une autre URL (locale ou externe).
On utilise pour cela la commande ErrorDocument dont voici quelques exemples d'utilisation :
ErrorDocument 404 /monfichier404.html ErrorDocument 404 http://www.mondomaine.com ErrorDocument 403 /accesrefuse.html
Cette commande doit se trouver dans un fichier .htaccess dans le répertoire dont vous souhaiter rediriger les messages d'erreurs.
(typiquement la racine de votre site web mais pas obligatoirement)
Voici comment empêcher l'affichage de la page d'index qui liste les fichiers d'un répertoire.
Prenez votre éditeur de texte favori (Bloc Notes, Vim, Emacs, whatever), et créer un fichier texte avec le contenu suivant:
IndexOptions -Indexes
Mettez le fichier créer précédemment en ligne via FTP, placer le dans le répertoire de votre choix, et renommer le en ”.htaccess” .
Il ne vous reste plus qu'a tester.
Voici comment restreindre l'accès à une liste d'adresse IP's.
Prenez votre éditeur de texte favori (Bloc Notes, Vim, Emacs, whatever), et créer un fichier texte avec le contenu suivant:
# On autorise l'accès à l'ip 213.228.62.50 Allow from 213.228.62.50 # On autorise l'accès à l'ip 213.228.62.51 Allow from 213.228.62.51 # On interdit l'accès à toutes les autres ips Deny from All
Mettez le fichier créer précédemment en ligne via FTP, placer le dans le répertoire de votre choix, et renommer le en ”.htaccess” ( sans les guillemets ).
Il ne vous reste plus qu'a tester.
Voici comment sécuriser l'accès à un répertoire (ou tout le site), par une authentification HTTP.
Supposons que vous souhaitez protéger le répertoire appelé secret, accessible via l'URL suivante :
http://www.online.net/secret/
Il s'agit de créer un fichier contenant la liste des utilisateurs et leur mot de passe, nous appellerons ce fichier “passlist.txt”.
martin:PasSw0rd jean:SecR3t sophie:H1dDeN
Le premier champ est le nom de l'utilisateur, le second est le mot de passe en clair.
Pour limiter l'accès aux utilisateurs déclarés dans le fichier “passlist.txt”, il vous faut créer un fichier htaccess dans le répertoire que vous souhaitez protéger avec le contenu suivant :
PerlSetVar AuthFile secret/passlist AuthName "Acces Restreint" AuthType Basic <limit GET POST> require valid-user </limit>
La commande PerlSetVar désigne le chemin d'accès à la table des utilisateurs. Il est relatif au document_root.
Donc si vous avez stocké votre table d'utilisateurs dans le répertoire secret/password/ sous le nom 'maliste.txt', vous devrez modifier la directive PerlSetVar AuthFile en conséquence :
PerlSetVar AuthFile secret/password/maliste.txt
La commande require valid-user autorise tous les utilisateurs valides à télécharger les fichiers du répertoire. Vous pouvez aussi utiliser la syntaxe suivante :
require user martin sophie
Pour n'autoriser uniquement que les utilisateurs martin et sophie, mais pas jean.
Mettez le fichier créer précédemment en ligne via FTP, placer le dans le répertoire de votre choix, et renommer le en “.htaccess” .
Il ne vous reste plus qu'a tester.
Pour ceux qui veulent aller plus loin, le guide utilisateur d'Apache qui traite en détail tout les aspects d'authentification.
Vous avez la possibilité de mettre des redirections vers une autre partie de votre site, ou vers un autre site .
Pour rediriger votre site vers un autre (vers http://www.online.net par exemple)
# Redirection vers le site d'Online.net RedirectPermanent / http://www.online.net/
Mettez le fichier en ligne via FTP à la racine du sous domaine concerné (répertoire www pour www.domaine.com, blog/ pour blog.domain.cometc ) et renommer le en en ”.htaccess”.
Vous avez la possibilité de mettre des redirections vers une autre partie de votre site, ou vers un autre site directement via un fichier html.
Cette méthode, plus simple mais bien moins propre et efficace, utilise les documents HTML eux-mêmes, pour indiquer leur déplacement.
Cette méthode ne devrait être utilisée que lorsque les redirections HTTP sont impossibles.
Exemple de redirection de http://ancienne.adresse.fr/dossier1/page1.html vers http://nouvelle.adresse.fr/dossier2/page2.html
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="refresh" content="0; url=http://nouvelle.adresse.fr/dossier2/page2.html" /> <title>Redirection</title> <meta name="robots" content="noindex,follow" /> </head> <body> <p><a href="http://nouvelle.adresse.fr/dossier2/page2.html">Redirection</a></p> </body> </html>
Vous avez la possibilité de mettre des redirections vers une autre partie de votre site, ou vers un autre site directement via un fichier PHP. Créez un fichier index.php contenant le code suivant, a l'appel de la page http://domaine.com/index.php vous serez redirigé vers http://nouveausite.com/.
<?php
header("Location: http://nouveausite.com/");
?>
Le module apache mod_rewrite est activé sur nos serveurs d'online, son fonctionnement via un fichier htaccess est standard.
La directive FollowSymlinks est activé et ne peut être modifiée, il ne faut donc pas la déclarer, sinon vous auriez une error http 500 .
Prenons un exemple, le nom de domaine est domaine.com, l'url du script a appeler est http//www.domaine.com/index.php avec le nom de page en argument.
RewriteEngine On RewriteRule ^([^\.]+)\.html /index.php?page=$1 [L]
Mettez le fichier en ligne via FTP à la racine du sous domaine concerné (répertoire www pour www.domaine.com, blog/ pour blog.domaine.com etc ) et renommer le en en ”.htaccess”.
Vous pouvez maintenant tester en appelant l'url http://www.domaine.com/test.html, index.php sera exécute et recevra en argument la variable page qui a pour valeur “test”.