Estou com dificuldades para entender a configuração básica do apache.
Eu quero ativar um conjunto de padrões para todos os arquivos e diretórios no servidor, mas depois ativar / desativar ou modificá-los para determinados arquivos e / ou diretórios.
Os padrões que desejo são negar o acesso a todos os arquivos no servidor e permitir o acesso a todos os diretórios abaixo da raiz da Web (/ var / www / html).
Eu quero permitir o acesso a certos arquivos (que correspondem a um regex) na raiz da web e em todos os subdiretórios (que podem ser criados dinamicamente no futuro) e permitir o acesso a determinados arquivos e / ou diretórios de um determinado IP ( ou sub-rede).
Todas as páginas de erro (para arquivos / diretórios que não existem ou não são permitidos) são mapeadas para uma string simples em localized-error-pages.conf.
Eu também quero desativar as listagens de diretório de todos os diretórios, mas mostrar um arquivo index.html, se ele existir. Por exemplo, eu gostaria de algo como o seguinte (todos mostrariam uma página de erro se o arquivo ou diretório não existe ou não é permitido):
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
Se a raiz é / var / www / html, eu quero fazer algo como o seguinte (no ubuntu em apache.conf), NOTA isso não funciona :
...
<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>
Se eu inserir o endereço da raiz ou de qualquer subdiretório (sem especificar index.html), quero mostrar o index.html para esse diretório, se ele existir, ou uma página de erro padrão (mapeada para uma string simples em erro localizado -pages.conf Por exemplo:
O problema é que, mesmo depois de pesquisar e ler, não entendo como a configuração do apache funciona, especialmente com a ordem de especificação de regras e como elas se conectam a outros diretórios; mas acho que um exemplo de trabalho me ajudaria a entender.
Alguém poderia ajudar?