我有一个画廊与图片。 如果有人链接我的画廊图片从其他地方(远程服务器),应该显示一个福步图片。 这基本上可行,但现在我认识到我的重写规则奇怪的行为。 这是规则:
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]
到底发生了什么:画廊由shtml页面组成,它将图片与相关path相链接,我可以前后浏览图片。 这工作,每张图片都显示出来。 当我在邪恶的远程服务器上调用页面时,链接一个图片的远程服务器,远程服务器得到了想要的效果,但是现在发生了一些奇怪的事情:回到我自己的服务器上,当我浏览图片画廊到被邪恶的远程服务器调用的图片,我突然也得到了那里的固定图片,甚至在我的画廊。 当我打F5重新加载画廊,图片再次工作。 但这是不可接受的。
我能做什么? 我试图改变和结合或离开RewriteRule的标志,但没有任何帮助。 唯一可以接受的解决scheme是设置[F]标志。 在这种情况下,邪恶的远程服务器不会看到被禁止的图像,而是一个空白页面,但至less我的画廊每次工作。 但是我宁愿要让这个被形象化的图像工作。 有任何想法吗?
禁止的图像被caching在您的网页浏览器中。 您需要使用mod_headers将其设置为永不caching。
尝试:
<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>
我相信你的浏览器只是caching禁止的图像。 你应该能够使用mod_expires来强制一个没有caching的政策,只是你的禁止图像。