4 votes

Comment plusieurs sections <Directory> fonctionnent dans la configuration Apache (httpd.conf) ?

Par exemple, si mon fichier '/etc/apache2/httpd.conf' ressemble à ceci :

    AllowOverride None

    AllowOverride FileInfo

La règle AllowOverride du dernier remplace celle du premier pour le répertoire /home. Cette partie est claire.

Mais que se passe-t-il si mon fichier httpd.conf ressemble à ceci ?

    AllowOverride None
    Options -MultiViews

        RewriteEngine On
        RewriteBase /

        [...]

    [...]

        # POURQUOI 'RewriteEngine On' EST-IL REQUIS ?
        RewriteEngine On

        RewriteBase /wp-content/cache/minify/
        RewriteRule [...]

QUESTIONS :

  1. Le RewriteEngine On dans la première section ne devrait-il pas s'appliquer également à la deuxième section , étant donné que cette dernière est un sous-répertoire ? Mais j'ai remarqué que je dois également ajouter la règle RewriteEngine On dans la deuxième section .

  2. Cela signifie-t-il que je devrais également copier toutes les règles communes de la première section vers la deuxième section ? Par exemple, AllowOverride None, Options -MultiViews, etc.

2voto

its_me Points 175

1. Est-ce que le RewriteEngine On dans la première section est censé s'appliquer à la deuxième section également, étant donné que cette dernière est un sous-répertoire? Mais j'ai remarqué que j'ai besoin d'ajouter la règle RewriteEngine On dans la deuxième section également.

Cette réponse de Jon Lin sur ce que fait la directive RewriteOptions Inherit est révélatrice, et répond indirectement à cette question.

"Normalement, si vous avez un fichier .htaccess dans un sous-répertoire particulier, tous les [paramètres de configuration de mod_rewrite] dans un répertoire parent sont supplantés et ne seront pas appliqués."

Liens connexes:

2. Est-ce que cela signifie que je devrais aussi copier toutes les règles communes de la première section vers la deuxième section ? Par exemple, AllowOverride None, Options -MultiViews, etc.

Non, puisque toutes les règles pour '/var/www/example.com/public' (définies dans la section ) s'appliquent également à ses sous-répertoires, il n'est pas nécessaire de les copier à nouveau dans la section .

Il était facile de trouver cela.

J'ai ajouté ceci à l'intérieur de la section de mon httpd.conf:

    # Définir l'en-tête noindex pour robots.txt

        Header set X-Robots-Tag "noindex"

Puis j'ai déposé un fichier robots.txt dans les répertoires '/var/www/example.com/public' et '/var/www/example.com/public/wp-content/cache/minify'. Les deux ont été servis avec l'en-tête HTTP noindex.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X