如何防止在WordPress中使用htaccess进行热链接?为什么大多数常用的方法都不起作用?

时间:2018-03-21 作者:Rox

我从这个开始。htaccess配置:

Options -Indexes
<files wp-config.php>
order allow,deny
deny from all
</files>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\\.php)$ $1 [L]
RewriteRule . index.php [L]

# END WordPress
为了保护网站免受热链接盗窃,我搜索了最佳解决方案,在代码底部添加了以下代码:

RewriteEngine on
RewriteCond %{REQUEST_URI} !hotlinking\\.png$
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\\.)?mywebsite\\.com [NC]
RewriteRule \\.(jpe?g|png|gif)$ /hotlinking.png [NC,L]
上面的代码是防止热链接的最常见的解决方案,这很清楚,但它不起作用:例如,当我粘贴图像的URL时

https://www.mywebsite.com/wp-content/uploads/sites/2/2018/01/imagexample.jpg

浏览器将显示图像。

代码是否有错误,或者是否有更好的解决方案?

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

当我粘贴图像的URL时

我想你的意思是,当你把URL直接粘贴到浏览器的地址栏上时,我想你不会把它粘贴到其他任何地方。(?)

如果是这种情况,那么您看到的行为是正确的-浏览器应该显示图像。这不是真正的“热链接”,这是一个直接请求。实际上,您无法阻止直接请求(当HTTP Referer为空时),因为您可能最终会阻止这些图像供站点的真实用户使用,而这些用户不会将HTTP Referer标头作为请求的一部分发送。

以下条件允许此请求发生:

RewriteCond %{HTTP_REFERER} !^$
即当HTTP_REFERER 不是空的。

<小时>ASIDE: 您已经将问题标记为“多站点”,但是,您的.htaccess 文件:标准单站点和多站点?单站点代码是第一位的,所以这就是“获胜”的原因。

结束

相关推荐

如何使用HTACCESS文件进行301重定向到子页面?

我有2个URL。基本页面和子页面如下。http://example.com/serviceshttp://example.com/services/service-1我想在中添加301重定向规则.htaccess 文件,以便有人打开页面时:http://example.com/services 它应重定向到其子页:http://example.com/services/service-1 我尝试在中创建规则.htaccess 但它将作为其子页进入重定向循环。下面是我的代码.htacce