我正在运营 Wordpress 博客,有一位“绅士”正在窃取我的帖子。我决定让他难堪,并希望阻止从我的博客中盗用图片。
我使用 htaccesstools com/hotlink-protection/ 生成 .htaccess 部分以防止热链接。
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?marusiak.pl [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?wojcieh.net [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ https://wojcieh.net/wp-content/uploads/2017/06/fuck-you-stealer.gif [NC,R,L]
我创建了测试博客来查看是否可以热链接我的图片https://stagingwpblog.wordpress.com/2017/03/13/test-blog-post/并且图像仍在显示。
我在这里做错了什么?
答案1
因为你重定向对于“替代图像”,您需要包含一个例外,以便对您的“替代图像”的请求也不会被重定向,从而创建一个重定向循环(超时并给您的服务器带来额外的压力!)。
例如:
RewriteEngine on
RewriteCond %{REQUEST_URI} !thou-shalt-not-steal\.gif$
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?marusiak.pl [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?wojcieh.net [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ https://wojcieh.net/wp-content/uploads/2017/06/thou-shalt-not-steal.gif [NC,R,L]
但是,如果您必须返回图片(而不是简单地将请求返回 403),那么最好在内部重写请求,而不是重定向。这样,您的服务器就不会收到额外的请求,并且“替代图片”仍保持隐身状态(更难被窃取!)。例如:
RewriteEngine on
RewriteCond %{REQUEST_URI} !thou-shalt-not-steal\.gif$
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?marusiak\.pl [NC]
RewriteCond %{HTTP_REFERER} !^https://wojcieh\.net [NC]
RewriteRule \.(jpe?g|png|gif)$ /wp-content/uploads/2017/06/thou-shalt-not-steal.gif [NC,L]
注意:你只需要为典范主機。
在旁边:您使用的工具htaccesstools.com
确实包含附加说明:
注意:确保图像没有受到热链接保护,否则您的服务器可能会陷入无限循环。
...这就是您的代码所发生的情况。但他们没有提供执行此操作所需的代码/指令,因此生成的代码本身无法立即使用。
答案2
这很简单。您的测试站点从https://i1.wp.com/wojcieh.net/wp-content/uploads/2016/02/vcenter-server-6.-upgrade-logo.png
而不是从您的站点下载图片,这就是您.htaccess
无法正常工作的原因。