我从这个.htaccess配置开始:
Options -Indexes
order allow,deny
deny from all
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# 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
浏览器显示图像。
代码上是否有错误,还是有更好的解决方案?
发布于 2018-03-21 23:05:17
当我粘贴图像的URL
我想您的意思是当您将URL直接粘贴到浏览器的地址栏中时,因为我认为您不会将它粘贴到其他任何地方。(?)
如果是这样的话,那么您所看到的行为是正确的-浏览器应该显示图像。这不是真正的“热链接”,这是一个直接的请求。实际上,您无法阻止直接请求(当HTTP引用程序为空时),因为您可能会阻塞站点的实际用户的这些图像,这些用户不会将HTTP引用头作为请求的一部分发送。
允许此请求发生的条件如下:
RewriteCond %{HTTP_REFERER} !^$即。当HTTP_REFERER不是空的时候。
撇开:您已经标记了您的问题“多站点”,但是,您的.htaccess文件中似乎同时有两组代码:标准的单站点代码和多站点代码?单站点代码是第一位的,所以这就是“获胜”的原因。
https://wordpress.stackexchange.com/questions/298523
复制相似问题