Comportamento estranho com sinalizadores RewriteRule?

1

Eu tenho uma galeria com fotos. Se alguém vincular minhas fotos da galeria de algum outro lugar (servidor remoto), uma imagem proibida deve ser mostrada. Isso basicamente funciona, mas agora reconheci um comportamento estranho com minha regra de reescrita. Aqui está a regra:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://www.mydomain.net/pictures/.*$ [NC]   
RewriteRule .*\.(png|PNG)$ http://www.mydomain.net/pics/linkingpicsforbitten.png [R,L]

O que exatamente acontece: A galeria consiste em páginas shtml que ligam as imagens com caminhos relativos e eu posso navegar pelas fotos com as costas e para frente. Isso funciona, toda foto é mostrada. Quando eu invoco a página no servidor remoto maligno, que liga uma imagem da minha galeria, o servidor remoto recebe a imagem que é o efeito desejado, mas agora algo estranho acontece: De volta ao meu próprio servidor, quando eu navego na minha foto galeria para a imagem que foi invocada pelo servidor remoto do mal, eu de repente também tenho a imagem forçada lá, mesmo na minha galeria. Quando eu bato na F5 para recarregar a galeria, a imagem funciona novamente. Mas isso não é aceitável.
O que eu posso fazer? Eu tentei mudar e combinar ou deixar as bandeiras do RewriteRule, mas nada pode ajudar. A única solução aceitável seria definir o sinalizador [F]. Neste caso, o servidor remoto malvado não vê a imagem que foi lida, mas sim uma página em branco, mas pelo menos a minha galeria funciona todas as vezes. Mas prefiro que a imagem proibida esteja funcionando. Alguma idéia?

    
por Bevor 06.11.2011 / 11:27

2 respostas

2

A imagem proibida está sendo armazenada em cache no seu navegador da web. Você precisa usar mod_headers para configurá-lo para nunca armazenar em cache.

Tente:

<FilesMatch "linkingpicsforbitten\.png$">
<IfModule mod_headers.c>
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</IfModule>
</FilesMatch>
    
por 06.11.2011 / 11:55
1

Acredito que seu navegador esteja apenas armazenando em cache a imagem proibida. Você deve ser capaz de usar mod_expires para impor uma política sem cache apenas à sua imagem proibida.

    
por 06.11.2011 / 11:54