有没有办法区分热链接图像的网站与实际在网站上查看图像的用户?
<img src="http://example.com/img.jpg">
Run Code Online (Sandbox Code Playgroud)
VS
用户直接查看 http://example.com/img.jpg
您的服务器通常可以区分直接在您的域上查看图像的用户和另一个热链接图像的域.
停止热链接并允许直接查看的常用解决方案是.htaccess
,只允许Apache将图像文件提供给您的域,不要将图像文件提供给其他域.
因此,用户仍然可以直接转到您的图片文件...因为您的图片位于您的域中,但您的图片无法在其他域的图片标记中使用.
所以,在你的某个地方,你.htaccess
会有类似的东西:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
Run Code Online (Sandbox Code Playgroud)
有一些在线工具可以帮助您创建这些行.htaccess
.
当然,您不必具有此限制性,您可以允许一般的热链接,但仅限制来自"故障域"的热链接.
此外,如果您选择热连接器而不是它们请求的图像,您可以让Apache为服务器映像提供服务,而不是停止热链接,http://www.yourdomain.com/hotlink.jpg
如下所示:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.yourdomain.com/hotlink.jpg [R,L]
Run Code Online (Sandbox Code Playgroud)
您可以检查引荐来源网址,但这并不是 100% 准确。
用户可以欺骗引用者和代理,或者用户设置可以删除/更改它。