Ok, eu bati a cabeça contra a parede por algumas horas e isso não está funcionando. Abaixo estão os conteúdos do meu arquivo .htaccess. O que estou tentando fazer é bloquear o acesso a um conjunto de arquivos pdf e mp3 no meu site, a menos que o usuário clique nesses arquivos a partir de links nas páginas do meu site.
Em todos os lugares que eu olhei, o código é basicamente o mesmo que eu estou usando e simplesmente não está funcionando. Minhas perguntas são:
1) Estou fazendo algo errado?
2) Se não, como consegui depurar isso?
# BEGIN CustomRedirects
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(mp3|pdf)$ - [F,NC,L]
# END CustomRedirects
Os mp3 e os pdf não são sensíveis a maiúsculas e o mod_rewrite está ativado. Eu tenho o Wordpress instalado no meu site, mas ele está em um diretório mais alto na árvore do que esse arquivo .htaccess. Minha impressão da documentação é que meu arquivo .htaccess deve ter precedência, pois está localizado no diretório onde quero que essa reconfiguração ocorra. Se eu estragar o arquivo .htaccess o suficiente, recebo o erro 500, então só posso assumir que ele está sendo lido em algum momento.
Eu também tentei o seguinte, que eu encontrei de outra questão de falha de servidor e isso não funcionou:
SetEnvIf Referer . hotlink=1
SetEnvIfNoCase Referer ^http://(www\.)?mydomain\.com/.*$ !hotlink
<LocationMatch *.pdf>
Order allow,deny
Deny from env=hotlink
Allow from all
</LocationMatch>
Alguém tem alguma ideia?
Atualização:
Eu também tentei o seguinte para o RewriteRule sem efeito.
RewriteRule .*\.(mp3|pdf)$ - [F,NC,L]
Uma coisa que eu encontrei foi que, se eu deixar de fora a parte RewriteCond %{HTTP_REFERER} !^$
, funciona bem com a exceção do fato de que alguém ainda pode digitar a URL diretamente e acessar os arquivos. Isso é algo que eu gostaria de evitar.