Usando o .htaccess para ocultar arquivos

2

Digamos que eu tenha um arquivo index.php dentro do meu diretório público.

Usando DirectoryIndex index.php , posso definir esse arquivo como meu índice padrão no meu site.

Mas e se eu não quiser que os usuários insiram por meio de www.example.com/index.php , somente por www.example.com , como posso fazer isso?

EDITAR

Eu adicionei o seguinte código:

if (strpos($_SERVER['REQUEST_URI'], 'index.php')) {
    readfile('404.html');
    exit;
}

no início de index.php , de modo que inserir www.example.com/index.php resultaria em um erro 404, mas não entraria por www.example.com (portanto, não forneceria informações a um invasor em potencial se eu usasse PHP ou não) . Não é a melhor solução do mundo, mas funciona.

    
por federicot 11.12.2011 / 00:23

4 respostas

3

Sua pergunta não faz sentido. Se você deseja exibir uma página da Web para o usuário que solicita www.example.com , então deve haver um DirectoryIndex de algum tipo.

DirectoryIndex index.php index.html 

fará com que o apache pesquise no DocumentRoot do servidor para index.php e depois index.html e apresenta a versão renderizada da primeira encontrada para o usuário.

    
por 11.12.2011 / 00:40
2

Você não pode realmente "ocultar" a página. Você pode negar o acesso (resultando em um erro 403) usando o htaccess. Você também pode redirecionar usando mod_rewrite, seja de /index.php (como sugerido) para / ou de /index.php para seu arquivo 404 (como você está fazendo agora). A coisa mais próxima de esconder a página seria usar o mod_rewrite para ir de index.php para /, então quando os usuários acessam www.example.com ou www.example.com/index.php, ele aparece como www.example. com

    
por 12.12.2011 / 22:33
1

Você pode 'proibir' /index.php com algo como

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

Ou redirecione de /index.php para / com mod_rewrite (que é um pouco mais amigável).

    
por 11.12.2011 / 13:12
0

Eu vejo no seu comentário ao Koos que você quer esconder index.php, o que você não pode fazer. Você melhor curso de ação é colocar as partes que você quer escondido em outro arquivo e incluir esse arquivo no index.php. Feito corretamente, o usuário não verá a instrução de inclusão nem o arquivo incluído, apenas a saída resultante.

    
por 13.12.2011 / 02:01