热链接重定向

问题描述:

我有这个网址:www.example.com/yyy.gif在我的网站。 它实际上不是图像的直接链接,而是一个包含图像的HTML页面(直接指向图像的url是www.example.com/files/yyy.gif)。我想保持这种方式。热链接重定向

的问题

当链路(www.example.com/yyy.gif)某处发布(论坛,在各个网站的评论),它是相当普遍的,他们的脚本假定这是一个直接链接到图像并尝试将其显示为图像(<image src="www.example.com/yyy.gif">),从而导致其网站上的图像破碎。

问题

有没有办法检测到这些情况,并自动将它们重新路由到直接图片网址?请记住,访问者应该能够在不重定向的情况下打开原始网址。

+0

HTTP引用程序检查是否足以满足您的需求?也就是说,如果引用者不是www.example.com,那么你做一个内部(服务器端)重定向到www.example.com/files/yyy.gif –

+0

不,理想的行为是内部重定向只有当** www.otherexample.com **通过''链接到我时,但是当用户点击发布时没有重定向** www.otherexample.com **。我不确定是否可以完成。 – davis

我想我明白了!

因此,我检查了通过在链接上使用<img>标签加载链接访问同一URL时生成的请求标头。

唯一不同的参数是“接受”。当通过<img>访问URL时,它是*/*(Chrome,IE,Safari)或image/png,image/*;q=0.8,*/*;q=0.5(FF)。

但是,当通过单击链接(或者干脆直接打开URL)访问,它是这样的text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

所以我输出任何内容之前检查在我的剧本“text/html的”。如果它存在,我输出html版本;否则直接进入图像。

它看起来像我想要的一样工作(耶!)。

请问我应该注意哪些缺陷?

+0

不幸的是,我不认为你可以依靠这一点。没有可靠的方法来告诉源客户端(浏览器)如何请求文件...即使引用者不能被指定。 –

您可以检查$ _SERVER ['HTTP_REFERER']变量以查看网址是否源自您的网站。

如果没有,输出图像的一些标题,然后输出图像本身,而不是你通常会做的。