0

我创建了一个 htaccess 文件并将其放在 public_html 目录(我的服务器的根目录)中:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://mdpcomics.ir/.*$ [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ https://blogvault.net/wp-content/uploads/2014/12/no-hotlinking.png [NC,R,L]
</ifModule>

它阻止盗链并显示另一个图像。但它也不允许我自己的域。

即此链接不应显示图像: http ://dl.mdpcomics.ir/logo.png

但这个链接应该显示它。我的意思是我希望它使用以下链接显示图像: http ://mdpcomics.ir/?imagename=logo

但它也不允许这样做。

我已经到处搜索了,我尝试了很多建议,但所有建议都如下:

  1. 每个人都可以看到图像
  2. 没有人能看到包括我自己在内的图像 Oo

我的服务器操作系统是 linux,我的面板是 directadmin

编辑:我意识到我的主机有一个虚假或无效的 ip:178.63.56.20320 我通过 php 代码获得了该 ip:

echo $_SERVER['REMOTE_ADDR'];
4

1 回答 1

0

也许这是你的问题:在你的RewriteRule它说https://,但你RewriteCond正在测试http://. 您只需添加以下内容即可对其进行测试s?

RewriteCond %{HTTP_REFERER} !^https?://mdpcomics.ir/.*$ [NC]

需要注意的其他事项:

  • Referer如果请求来自 HTTPS 位置,客户端将不会在非 HTTPS 请求中发送
  • 一些客户从不发送Referer标头或将其设置为完全不同的东西以保护他们的隐私

为了捕捉这些情况,我会添加另一个条件:

# Assume client sent "real" Referer if it begins with http(s)://
RewriteCond %{HTTP_REFERER} ^https?:// [NC]

不利的一面是,如果您的站点运行正常的 HTTP,则可以从外部 HTTPS 位置热链接图像。

于 2016-02-07T20:03:15.223 回答