В исходный httpd.conf у меня есть
Options Indexes FollowSymLinks
Я создал файл конфигурации в /etc/httpd/conf.d/ с помощью
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>
Я перезапускаю сервер и все еще вижу файлы в
http://192.168.0.2:8009/images
Я подумал, что более конкретное правило имеет приоритет над общим
Где я что-то упускаю?
Вы в основном правы, однако упускаете тонкость в использовании опций.
Однако сначала не вставляйте их просто в контейнер NameVirtualHost, используйте оператор каталога ...
Вы правы в том, что применяются наиболее конкретные из них, однако, если оператор параметров содержит список параметров, где все имеет префикс + или -, то параметры объединяются с любыми существующими параметрами ...
Это означает
Options Indexes FollowSymLinks
сливается с
Options -ExecCGI -Indexes
формировать
Options Indexes FollowSymLinks -ExecCGI
Взгляните на документацию apache http://httpd.apache.org/docs/2.2/mod/core.html
и конкретно в примере:
... если вторая директива Options использует символы + и -:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>
то параметры FollowSymLinks и Includes устанавливаются для
/web/docs/spec
каталог.
Следовательно, поведение Apache с вашей конфигурацией является правильным.
Я бы просто явно объявил параметры для NameVirtualHost следующим образом:
<Directory /var/www/html/deve>
Options +FollowSymlinks -Indexes -ExecCGI
</Directory>