permitindo acesso ao índice apenas com .htaccess

3

Eu tenho isso no meu arquivo .htaccess, na raiz do site:

Options -Indexes
<directory ../.*>
Deny from all
</directory> 

<Files .htaccess>
order allow,deny
deny from all
</Files>

<Files index.php>
Order allow,deny
allow from all
</Files> 

O que estou tentando alcançar é bloquear o acesso de pastas e arquivos a qualquer coisa que não seja chamada de index.php, independentemente de qual diretório é acessado. Eu tenho a parte da pasta funcionando perfeitamente e a negação de todas as regras está funcionando bem - mas minha tentativa de permitir acesso ao index.php está falhando.

    
por YsoL8 10.05.2010 / 16:40

1 resposta

1

Talvez você esteja pensando em complicar, apenas negue todo o acesso e depois permita o acesso ao index.php e à própria pasta. Por exemplo:

Order allow,deny
Deny from All

<FilesMatch "^(index\.php)?$">
        Allow from All
</FilesMatch>

Se você não quer que o link funcione, você pode substituir a diretiva FilesMatch por Files index.php . Tenha em mente que isso depende da sua diretiva DirectoryIndex que arquivo será exibido ao acessar uma pasta sem nome de arquivo.

Edit: Para responder a pergunta em seu comentário, acho que você precisará de um .htaccess mais poderoso usando o mod_rewrite. Você não pode usar Directory e DirectoryMatch em um arquivo .htaccess de acordo com a documentação do Apache. Como a solicitação está sendo negada antes que o RewriteRule possa adicionar uma barra à direita, você não pode adicionar a barra à direita com mod_write.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !/index\.php$
    RewriteRule ^.*$ - [F]
</IfModule>

<IfModule !mod_rewrite.c>
    Order allow,deny
    Deny from All
</IfModule>
    
por 10.05.2010 / 17:45