Regras, padrões e substituições do Apache 2.4 para subdiretórios com o FilesMatch

2

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?

    
por markjames 27.11.2014 / 17:56

0 respostas