Vamos lá:
Crie um arquivo .htaccess. Se for Windows, copie de um diretório que já exista e pague seu conteúdo, ou baixe um exemplo da internet. O Windows não deixa criar arquivo assim que ele considera sem nome (somente com extensão).
O Conteúdo dele seria assim:
# htaccess do Daniel - testando e evoluindo - v0.1
IndexIgnore *
Options +FollowSymlinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule !^index.php(.*)$ index.php$1 [L]
</IfModule>
<Files .htaccess>
order deny,allow
deny from all
</Files>
A primeira linha com IndexIgnore não deixa listar o conteúdo do diretório.
A linha do Options +FollowSymlinks é para o funcionamento do módulo de rescritra.
Se o módulo de escrita estiver ativado, usa ele para substituir qualquer chamada de arquivo diferente de index.php e chama o index.php com a querystring usada inicialmente, ou seja, se eu chamar daniel.php?a=ddd, chama o caminho index.php?a=ddd.
Depois ele proíbe o acess odireto ao .htaccess. Só isso.
É simples e atende minhas necessidades. Claro que pode ser que eu melhore (com sua ajuda inclusive), mas já é um começo para evitar surpresas desagradáveis.
Esse arquivo faz efeito para os subdiretórios também. Se você quiser alterar as regras deles, basta criar um .htaccess com elas. Em caso de não criar, deve-se criar um arquivo index.php que não faz nada, pois sempre haverá redirecionamento para o index.php de cada diretório. Ou então na regra do .htaccess, basta colocar para redirecionar não apra o index.php, mas para /index.php ou /site/index.php para sempre ir para o mesmo arquivo.
Abraço!!
2 comentários:
Utilizo o index.php como o layout base, apenas dando include para as outras seções do site. Gostaria que os arquivos que são inclusos, não fossem acessíveis diretamente, apenas via requisões include (ou require). É possível fazer isso com o .htaccess? Qualquer informação a respeito será muito bem apreciada. Obrigado, bom post.
Sim. O exemplo de acesso é restrito ao usuário que somente pode acessar o index.php, ou a um frame na sua página, pois a requisição é via cliente. Usando "include" ou "require", o seu php tem acesso normal a estes arquivos.
Postar um comentário