Apache la directive AllowOverride

Temps de lecture: 2 minutes

Surchargez vos réglages avec htaccess

 

Lorsqu’un site web utilise un fichier .htaccess on voit cette directive (Donc cette directive n’est pas à utiliser ans le fichier htaccess qu’on soit d’accord !). Vous allez voir que le fichier htaccess n’est rien d’autre qu’une configuration d’Apache sans redémarrage du serveur. En effet dès qu’httpd.conf est modifié il faut recharger ou redémarrer Apache pour appliquer les modifications.

Attention : AllowOverride ne peut être utilisé que dans une section <Directory>

Directives impactée par AllowOverride

AllowOverride va dire ce que le fichier htaccess peut réécrire pour surcharger les directives plus générales dans le fichier httpd.conf. Il y a cependant un  nombre limité de directives qui peuvent être surchargées. Les classes de directives sensible à la surcharge sont :

  1. Indexes
  2. Options
  3. Limit
  4. FileInfo
  5. AuthConfig

Ainsi Indexes regroupes un ensemble de directives telles : DirectoryIndex (le plus important) mais aussi des moins connues AddIcon, AddDescription.

Pour Options : Options entre autres.

Pour Limit : Allow, Deny, Order

FileInfo :

1er groupe : directive contrôlant les types de documents : ErrorDocument (par exemple erreur 404, 401, 500. SetHandler (spécifie qui exécute les script php par exemple),

2eme groupe : les méta données des documents : Header, SetEnvIf (définit des variables d’environnement de façon conditionnel en PHP retrouvez les variables d’environnement dans $_SERVER, utile pour distinguer l’environnement de développement de la production)

3ème groupe : le module mod_rewrite : RewriteEngine, RewriteBase, RewriteCond, RewriteOptions, RewriteRule, ça je pense que ça vous est familier !

4ème groupe : le module mod_alias : RedirectPermanent (pour faire les 301), Redirect (Pour les 302), RedirectMatch entre autre.

5ème groupe : le module mod_actions : Action(utilisé lorsque vous exécutez les fichier php non pas avec un module apache, mais avec un script CGI comme quasiment tous les serveur Apache actuels). Action est utilisé avec AddHandler, en effet ce dernier spécifie le type de fichier, leur mime-type.

6ème groupe : le module mod_mime : AddHandler, RemoveHandler etc.

Exemples d’utilisation

AllowOverride None

Dans ce cas votre fichier htaccess sera sans effet, il ne pourra pas modifier ce qui a déjà été défini dans le fichier httpd.conf ou tout autre fichier de configuration de virtual host.

AllowOverride All

Là tout est permis, c’est à dire ce qui a été listé (les 5 points)

AllowOverride Options=Multiviews, Indexes

Si vous essayez de surcharger une directive non définie dans l’exemple ci-dessus provoquera « Internal Server Error », autant dire, ce message d’erreur ne va pas vous aider beaucoup, dans ce cas allez dans les logs d’Apache.

Au fait savez vous comment on définit le fait que c’est le fichier .htaccess qui contient les directives? C’est Grâce à une autre directive AccessFileName qui spécifie le nom du fichier qui comporte tous les réglages ! Vous pouvez donc le modifier !

Une chose à laquelle il faut prêter particulièrement attention, ce sont les valeurs par défaut des directives, suivant les versions d’Apache. Par exemple, à partir d’Apache 2.3.9, AllowOverride est à None, alors qu’avant c’était à All !!