htaccess不允许我的域名

时间:2016-02-07 19:11:03

标签: .htaccess directadmin

我创建了一个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.   
  3. 没有人能看到包括我自己在内的图片O.o
  4.   

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

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

echo $_SERVER['REMOTE_ADDR'];

1 个答案:

答案 0 :(得分:0)

也许这是您的问题:在您的RewriteRule中说https://,但您的RewriteCond正在测试http://。您只需添加s?

即可对其进行测试
RewriteCond %{HTTP_REFERER} !^https?://mdpcomics.ir/.*$ [NC]

需要注意的其他事项:

    如果请求来自HTTPS位置,则
  • 客户端不会在非HTTPS请求中发送Referer
  • 有些客户从不发送Referer标题或将其设置为完全不同的内容以保护其隐私

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

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

缺点是,如果您的网站运行正常的HTTP,图像可以从外部HTTPS位置进行热链接。