热链接重定向
我有这个网址: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">
),从而导致其网站上的图像破碎。
问题
有没有办法检测到这些情况,并自动将它们重新路由到直接图片网址?请记住,访问者应该能够在不重定向的情况下打开原始网址。
我想我明白了!
因此,我检查了通过在链接上使用<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版本;否则直接进入图像。
它看起来像我想要的一样工作(耶!)。
请问我应该注意哪些缺陷?
不幸的是,我不认为你可以依靠这一点。没有可靠的方法来告诉源客户端(浏览器)如何请求文件...即使引用者不能被指定。 –
您可以检查$ _SERVER ['HTTP_REFERER']变量以查看网址是否源自您的网站。
如果没有,输出图像的一些标题,然后输出图像本身,而不是你通常会做的。
在这种情况下,如果用户来自某个其他网站上发布的链接(“”),则该用户也将获得_directly_图像。我不想那样。我开始认为,我试图完成的甚至在理论上是不可能的。 – davis
HTTP引用程序检查是否足以满足您的需求?也就是说,如果引用者不是www.example.com,那么你做一个内部(服务器端)重定向到www.example.com/files/yyy.gif –
不,理想的行为是内部重定向只有当** www.otherexample.com **通过'
'链接到我时,但是当用户点击发布时没有重定向** www.otherexample.com **。我不确定是否可以完成。 –
davis