Eu preciso fazer uma operação um pouco estranha.
Primeiro, eu corro no Debian, apache2 (que 'roda' como usuário www-data)
Então, eu tenho um arquivo de texto simples com .txt ou .ini, ou qualquer extensão, não importa.
Esses arquivos estão localizados em subpastas com uma estrutura como esta:
www.example.com/folder1/car/foobar.txt www.example.com/folder1/cycle/foobar.txt www.example.com/folder1/fish/foobar.txt www.example.com/folder1/fruit/foobar .TXT
portanto, o nome do arquivo sempre o mesmo, idem para a 'hierarquia', basta alterar o nome da pasta: /folder-name-static/folder-name-dinamyc/file-name-static.txt
O que devo fazer é (acho) relativamente simples: devo ser capaz de ler esse arquivo por programas no servidor (python, php por exemplo), mas se eu tentar recuperar o conteúdo do arquivo por broswer (digitando a URL www. example.com/folder1/car/foobar.txt, ou via cUrl, etc.) Devo receber um erro proibido, ou qualquer outra coisa, mas não acessar o arquivo .
Também seria bom que mesmo acessar esses arquivos via FTP estivesse 'oculto' ou não pudesse ser baixado (pelo menos eu uso com a raiz ftp e os dados do usuário)
Como eu posso fazer?
Achei isso online, ser colocado no arquivo .htaccess:
<Files File.txt>
Order allow, deny
Deny from all
</ Files>
Parece funcionar, mas apenas se o arquivo estiver na raiz da web (www.example.com/myfile.txt) e não nas subpastas. Além disso, as pastas no segundo nível (www.example.com/folder1/ fruit /foobar.txt) serão criadas dinamicamente. Gostaria de evitar a necessidade de alterar o arquivo .htaccess de tempos em tempos.
É possível criar uma regra, algo assim, que se aplica a todos os arquivos com nome determinado, que está em * www.example.com / nome-da-pasta-estático / * nome-da-pasta-dinamyc / *** nome do arquivo -static.txt *, onde essas partes são sempre iguais , apenas ** essa mudança ?
EDIT :
Como Dave Drager disse, eu poderia simplificar isso mantendo esses arquivos fora do diretório acessível na web. Mas esses diretórios também conterão outros arquivos, imagens e outras coisas usadas pelos meus usuários, então simplesmente tento não ter um sistema de pastas duplicadas, como:
/var/www/vhosts/example.com/httpdocs/folder1/car/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/cycle/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/fish/[other folders and files here]
//and, then for the 'secrets' files:
/folder1/data/car/foobar.txt
/folder1/data/cycle/foobar.txt
/folder1/data/fish/foobar.txt
fonte
Sim, tudo isso é possível. No entanto, se você possui programas no servidor que precisam acessar arquivos de texto, eles devem residir fora da raiz da web. Por exemplo, se seus arquivos da web estiverem em ~ / public_html /, você deverá armazená-los em ~ / data. Não há razão para colocá-los na pasta pública html.
Além de removê-los da pasta da web, verifique se as permissões unix estão definidas corretamente neles. O usuário dos scripts precisaria ter acesso de leitura (gravação?), Mas ninguém mais precisa ter esse acesso.
Se você precisar desses arquivos em uma pasta acessível na Web, existem maneiras de fazer o que você está solicitando através do mod_rewrite. Veja o site a seguir para muitos exemplos, um dos quais deve ser adequado à conta.
http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
fonte
Por que não usar permissões de arquivo unix padrão para negar acesso ao arquivo?
Há uma explicação decente na wikipedia sobre permissões de arquivo unix
fonte
Coloque o arquivo .htaccess no subdiretório e, na instrução, defina AllowOverride All
fonte
Você pode usar ACLs do Linux .
fonte
Depois de ler todos vocês, notei que o arquivo .htaccess pode ser o caminho para mim: afeta apenas os arquivos da pasta em que está.
Mas minhas pastas são geradas dinamicamente. Eu não acho que copiar o arquivo .htaccess ou recriá-lo toda vez que eu criar uma nova pasta é uma maneira confiável.
Como Dave disse, o caminho lógico deve ser armazenar os arquivos de texto de configuração fora da pasta acessível pela web.
Mas em todas as pastas eu tenho que armazenar outros arquivos, imagens, por exemplo, que devem estar acessíveis na Web ... e ainda não acho que replicar a estrutura das pastas, dentro e fora do diretório raiz da Web, também seja uma maneira confiável. . Portanto, precisarei alterar até a configuração do apache para incluir a pasta config no caminho permitido pelo php. Isso não deve ser um problema.
Então, se eu não tenho o melhor , tenho que escolher o menos pior .
Vou usar a solução de vários arquivos .htaccess, por enquanto, esperando não ter arrependimentos no futuro.
Todas as outras soluções são apreciadas.
fonte
Na seção Documentação do pedido :
Portanto, o seguinte está incorreto:
A seguir está (mais) correto
fonte