Я испытываю затруднения при понимании основной апачской конфигурации.
Я хочу включить ряд значений по умолчанию для всех файлов и каталогов на сервере, но затем позволить/запретить или изменить их для определенных файлов и/или каталогов.
Значения по умолчанию, которые я хочу, должны запретить доступа ко всем файлам на сервере и предоставить доступ ко всем каталогам ниже веб-корня (/var/www/html).
Я хочу предоставить доступ к определенным файлам (которые соответствуют regex) в веб-корне, и все подкаталоги (который может быть создан динамично в будущем) и предоставить доступ к определенным файлам и/или каталогам от данного IP (или подсеть) только.
Все ошибочные страницы (для файлов/каталогов, которые не существуют или не позволяются), отображаются на простой строке в localized-error-pages.conf.
Я также хочу отключить списки каталогов для всех каталогов, но показать файл index.html, если он существует. Например, я хотел бы что-то как следующее (все покажут ошибочную страницу, если файл или каталог не будет существовать или не будет позволен):
example.com # shows index.html in root
example.com/test.txt # shows test.txt in root
example.com/test.php # runs if IP matches
example.com/dir1 # shows index.html in dir1
example.com/dir1/test.txt # shows test.txt in dir1
example.com/dir2 # shows index.html for dir2 if IP matches
Если корень является/var/www/html, я хочу сделать что-то как следующее (на человечности в apache.conf), ОТМЕТИТЬ, что это не работает:
...
<FilesMatch "^.*$>
Require all denied
</FilesMtch>
<FilesMatch "^.*\.(html|txt|pdf)$">
Require all granted
</FilesMatch>
<FilesMatch "^.*\.php$">
Require ip 192.168.0.10
</FilesMatch>
<Directory />
AllowOverride None
Require all denied
</Directory>
<Directory /var/www/html>
AllowOverride None
Options Indexes FollowSymLinks
<LimitExcept GET POST OPTIONS>
Require all granted
</LimitExcept>
</Directory>
<Directory /var/www/htm/dir2>
AllowOverride None
Require ip 192.168.0.10
<Directory>
Если я ввожу адрес для корня или какого-либо подкаталога (не указывая index.html), я хочу показать index.html для того каталога, если он существует или ошибочная страница по умолчанию (отображенный на простой строке в localized-error-pages.conf. Например:
Проблема даже после большого поиска и чтения я не понимаю, как апачская конфигурация работает, особенно с порядком определения правил и как они располагаются каскадом к другим каталогам; но я думаю, что рабочий пример помог бы мне понять.
Кто-либо мог помочь?