在我所有的Apache服务器上,我使用热链接保护,因为我讨厌有人可以使用我的服务器带宽将我的图像/闪存粘在他们的站点上。
为了使热链接保护工作,在我的Apache .htaccess我只是使用这个:
#Hotlink protection (only for www.domain.it cause http://domain.it is being redirected) RewriteCond %{HTTP_REFERER} !^http://www.domain.it/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.domain.it$ [NC] RewriteRule .*\.(wav|swf|jpg|jpeg|gif|png|bmp|js)$ - [F,NC]
这很好,但我最近发现,当我要求http://www.domain.com/somepage.htm/ ( 与最后的斜杠 )的热链接保护似乎被触发和服务器停止页面下载.(wav|swf|jpg|jpeg|gif|png|bmp|js)文件
你知道我怎么能解决这个.htaccess?
在今天之前,我甚至认为如果我inputURL作为URL http://www.domain.com/somepage.htm/ (最后一个斜杠),服务器应该返回一个错误。 但我看到这是正常的,因为如果你寻找http://www.php.net/docs.php它返回http://www.php.net/docs.php/ (最后的斜线)相同的页面。 为什么呢,你能解释一下吗?
谢谢
你确定这是热链接保护吗? 如果你的网站是这样的:
/somepage.htm /images/a.jpg
那么如果somepage.htm具有像<img src="images/a.jpg">这样的图像的相对path,并且你去http://example.com/somepage.htm/ ,那么你的networking浏览器会认为它在“somepage.htm”目录并尝试加载图片http://example.com/somepage.htm/images/a.jpg 。 如果你去那里,Apache可能会向你发送另一个somepage.htm的副本,这将导致你的浏览器显示一个破碎的图像。
我不确定Apache是否有一个设置来closures它。 对纯HTML文件没有多less意义,但Apache(和其他服务器)允许的原因是,对于使用“漂亮的URL”(比如serverfault的URL)的网站,URL超出了实际的文件。 在serverfault上没有一个名为“urls-with-final-slash-trigger-hotlink-protection-on-my-server”的文件,这是人们(和Google)阅读的地方。 你可以用我的服务器上带有最终斜杠触发热链接保护的URL加载这个问题
虽然我不知道serverfault是如何做的(有很多方法可以做到这一点),但几乎可以肯定,没有一个名为“197935”的文件。 可能有一个名为“questions”的脚本,服务器可以运行该脚本,脚本会看到整个URL,在数据库中查找数字,然后创build该页面。