Eu tenho um site existente que precisa vincular a um arquivo pdf em nosso servidor web. O problema é que SOMENTE os usuários que foram autenticados fazendo login no site devem poder visualizar o arquivo. Eu tentei tudo o que posso pensar e simplesmente não consigo descobrir como configurar o apache para fazer o que eu quero. Ou permite que todos acessem o arquivo ou ninguém tem acesso.
Como faço para configurar a configuração de forma que apenas solicitações de foo.bar.com sejam autorizadas a obter o arquivo de blah.baz.com?
Update No meu arquivo de configuração para o meu site eu tenho atualmente
<Directory "/usr/local/web/static/foo">
Order allow,deny
Deny from all
Allow from foo.bar.com
</Directory>
Quando examino a solicitação com falha no console do Chrome, vejo que ela contém
Host:blah.baz.com
Referer:http://foo.bar.com/
Acabei usando a variável de ambiente 'Referer' para verificar se a requisição vinha do site correto. Então, para o exemplo que dei acima, a configuração ficaria assim:
Você pode fazer isso com
mod_write
desta forma:Tente um referenciador falso:
O arquivo deve ser servido através de seu aplicativo onde seu conteúdo é lido do disco e então transferido para o usuário. No entanto, como há uma sobrecarga ao usar essa abordagem, muitos agora recomendam o uso do mod_xsendfile do Apache.
Para resumir, você precisará modificar seu aplicativo para fazer o que deseja, mas usar o mod_xsendfile pode minimizar a quantidade de alterações que precisam ser feitas no código.
Você pode consultar o seguinte link como um guia para isso: https://codeutopia.net/blog/2009/03/06/sending-files-better-apache-mod_xsendfile-and-php/