2016-02-07 49 views
0

我創建了一個htaccess文件,並把它放在public_html目錄(根我的服務器):htaccess的不允許我的域名

<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. 沒有人能看到的圖像,包括我自己哦哦

我的服務器操作系統是Linux,我的面板是directadmin

編輯: 我意識到,我的主機有一個假的或無效的IP:178.63.56.20320 我得到的IP通過PHP代碼:

echo $_SERVER['REMOTE_ADDR']; 

回答

0

也許這是你的問題:在你RewriteRule它說https://,但你的RewriteCond正在測試http://。你可以把它簡單地添加s?測試兩種:

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

而且事情需要注意的:

  • 客戶端不會在非HTTPS請求發送Referer如果請求源自一個HTTPS位置
  • 一些客戶端從不發送Referer頭或將其設置爲完全不同的東西,以保護他們的隱私

爲了趕上這種情況下我會添加另一個條件:

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

的缺點是,圖像可以從國外HTTPS的位置,如果你的站點運行正常的HTTP被熱鏈接。

+0

感謝您的回答,但沒有幫助,RewriteCond%{HTTP_REFERER}^https?:// [NC]讓所有人都可以使用盜鏈,第一個仍然不允許我看到圖片與我自己的域名, –

+0

@MDP很奇怪,我不知道爲什麼REMOTE_ADDR是如此混亂。你的請求是否包含Referer頭文件?從一個文件'test.html':'test'鏈接到另一個'test.php':'<?php echo $ _SERVER ['HTTP_REFERER']?>' – Kontrollfreak