Como as opções funcionam no Apache

2

No httpd.conf original, eu tenho

Options Indexes FollowSymLinks

Eu criei um arquivo de configuração em /etc/httpd/conf.d/ com

NameVirtualHost 192.168.0.2:8009
<VirtualHost  192.168.0.2:8009>
    DocumentRoot /var/www/html/deve
    ServerName "deve:8009"
    ErrorLog /var/www/deve_errorlog
    CustomLog /var/www/deve_customlog common
    Options -ExecCGI -Indexes
</VirtualHost>

Eu reinicio o servidor e ainda consigo ver arquivos em

http://192.168.0.2:8009/images

Eu pensei que a regra mais específica sobrepõe a regra geral

De onde eu sinto falta de algo?

    
por Luc M 13.09.2009 / 03:16

1 resposta

8

Você está basicamente correto, mas falta uma sutileza no uso de Opções.

Primeiro, no entanto, não basta colocá-los no container NameVirtualHost, use uma declaração do diretório ...

Você está correto que os mais específicos se aplicam, no entanto, se uma declaração de opções contiver uma lista de opções onde cada é prefixado com + ou -, então as opções são mescladas com quaisquer opções ...

Isso significa

Options Indexes FollowSymLinks

é mesclado com

Options -ExecCGI -Indexes

para formar

Options Indexes FollowSymLinks -ExecCGI

Veja a documentação do apache link

e especificamente no exemplo:

...if the second Options directive uses the + and - symbols:

<Directory /web/docs>
   Options Indexes FollowSymLinks
</Directory>

<Directory /web/docs/spec>
   Options +Includes -Indexes
</Directory>

then the options FollowSymLinks and Includes are set for the /web/docs/spec directory.

Portanto, o comportamento que o Apache está exibindo com sua configuração está correto.

Eu declararia explicitamente as opções para o NameVirtualHost da seguinte forma:

<Directory /var/www/html/deve>
  Options +FollowSymlinks -Indexes -ExecCGI
</Directory>
    
por 13.09.2009 / 08:44