Vérificateur de syntaxe .htaccess
Collez le contenu d'un fichier .htaccess pour détecter instantanément les erreurs courantes : balises de bloc non fermées, noms de directives mal orthographiés, RewriteRule avec trop peu d'arguments et lignes RewriteCond sans règle associée.
Astuces
- Ce vérificateur est une analyse statique heuristique, ligne par ligne — ce n'est pas un véritable analyseur Apache. Testez toujours sur un serveur réel ou un environnement de staging avant la mise en production.
- Si vous avez accès au terminal du serveur Apache,
apachectl configtestreste la vérification de syntaxe la plus fiable qui soit. Cet outil convient pour des contrôles rapides quand cette commande n'est pas accessible, par exemple en hébergement mutualisé. - L'avertissement « directive non reconnue » n'est qu'une hypothèse peu fiable fondée sur une liste fixe. Si vous utilisez une directive d'un module moins courant, cet avertissement ne signifie pas forcément une erreur.
- Empiler plusieurs lignes RewriteCond à la suite est un usage normal (elles agissent comme des conditions ET). Cet outil n'avertit que lorsque la dernière RewriteCond d'une chaîne n'est pas suivie d'une RewriteRule.
- Avant de déployer en production, appliquez les changements par petites étapes et vérifiez chacune d'elles, plutôt que de remplacer tout le fichier d'un coup.
Questions fréquentes
AllowOverride None pour ce répertoire, ce qui fait que .htaccess est totalement ignoré. Demandez à l'administrateur du serveur de confirmer que AllowOverride All (ou au moins les catégories dont vous avez besoin, comme AuthConfig ou FileInfo) est activé. Vérifiez également qu'un cache navigateur ou CDN ne sert pas une ancienne version.RewriteRule motif substitution [drapeaux]. Le motif est une expression régulière comparée au chemin d'URL demandé (sans la barre oblique initiale), et la substitution peut référencer les groupes capturés du motif via $1, $2, etc. Les drapeaux se placent entre crochets, séparés par des virgules, comme [L] (arrêter le traitement des règles suivantes) ou [R=301] (redirection permanente).%{REQUEST_FILENAME} !-f (n'appliquer la règle que si le chemin ne correspond pas encore à un fichier existant), afin que la règle cesse de s'appliquer une fois la cible réellement présente.
Anecdote — Pourquoi ce nom « .htaccess » ?
Le nom « .htaccess » est l'abréviation de « hypertext access » (accès à l'hypertexte), et son histoire remonte aux premières versions de NCSA httpd puis d'Apache, vers 1995. Il fut introduit à l'origine pour permettre aux propriétaires d'un répertoire de configurer une protection par mot de passe (authentification Basic) sur leur propre espace, sans avoir à toucher au fichier de configuration global du serveur (httpd.conf), que seul l'administrateur pouvait modifier.
Ce qui rend .htaccess si pratique, c'est que dès lors que l'administrateur Apache l'a autorisé via la directive AllowOverride, les changements prennent effet dès le téléversement du fichier par FTP ou un gestionnaire de fichiers, sans redémarrage du serveur. Cela permet aux utilisateurs d'un hébergement mutualisé, qui n'ont généralement pas accès à la configuration principale, de gérer redirections, mise en cache et restrictions d'accès répertoire par répertoire.
Cette commodité a toutefois un coût. La documentation officielle d'Apache recommande explicitement de placer les directives dans la configuration principale du serveur plutôt que dans .htaccess dès lors qu'on y a accès. La raison est simple : à chaque requête, Apache doit rechercher et relire les fichiers .htaccess dans chaque répertoire parent, ce qui entraîne une surcharge de performance non négligeable par rapport à une configuration centralisée.
Une simple erreur de syntaxe peut aussi coûter cher : sur de nombreux hébergements mutualisés, un .htaccess invalide transforme toutes les pages de ce répertoire en une page blanche « 500 Internal Server Error », et retrouver la cause exacte peut prendre un temps considérable. Faire passer un contrôle statique rapide comme celui-ci, en plus d'une relecture attentive, aide à repérer les étourderies avant qu'elles ne provoquent une panne après la mise en ligne.