apache 防盜鏈

方法1:Apache防盜鏈的第一種實現方法,能夠用rewrite實現

(1.)首先要確認Apache的rewrite module可用,打開 httpd.conf 文件,若是前面有註釋去掉html

LoadModule rewrite_module modules/mod_rewrite.so

(2.)在Apache主配置文件中找到對應的位置(或虛擬主機中),規則配置在<Directory>裏面加入下列代碼 [ 也可在須要防盜鏈的目錄下新建 .htaccess,寫入一下內容 ]:nginx

#防盜鏈配置
RewriteEngine On  #啓用重寫
RewriteCond %{HTTP_REFERER} !^$ #容許空「HTTP_REFERER」的訪問,即容許用戶在瀏覽器地址欄中直接輸入圖片地址時圖片文件的顯示
RewriteCond %{HTTP_REFERER} !benet\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !www\.benet\.com/.*$ [NC] #設置容許訪問的HTTP來源,包括網站自身
RewriteRule .*\.(gif|jpg|swf)$ http://www.benet.com/about/nolink.png [R,NC,L] #將不知足referer條件的訪問重定向至nolink.png。nolink.png位於容許「盜鏈」的目錄about中,要至關注意,否則,警告信息和圖片將沒法在對方網站上顯示。

相關選項的解釋web

1.RewriteEngine On#啓用rewrite,要想rewrite起做用,必需要寫上瀏覽器

2.RewriteCond test-string condPattern #寫在RewriteRule以前,能夠有一或N條,用於測試rewrite的匹配條件,具體怎麼寫,後面會詳細說到。服務器

3.RewriteRule Pattern Substitution#規則post

4. %{HTTP_REFERER}:服務器變量,HTTPReferer是header的一部分,當瀏覽器向web服務器發送請求的時候,通常會帶上Referer,告訴服務器我是從哪一個頁面連接過來的,服務器藉此能夠得到一些信息用於處理。好比從我主頁上連接到一個朋友那裏,他的服務器就可以從HTTP Referer中統計出天天有多少用戶點擊我主頁上的連接訪問他的網站。測試

5.[ NC]指的是不區分大小寫,[R]強制重定向redirect網站

6.字母L表示若是能匹配本條規則,那麼本條規則是最後一條(Last),忽略以後的規則。

ui

防盜鏈配置的說明:url

1. 紅色部分:表示本身的信任站點。對個人站點來講,設置爲 http://www.benet.com和 http://benet.com

2. 綠色部分:要保護文件的擴展名(以|分開)。以這些爲擴展名的文件,必須經過紅色標註的網址引用,才能夠訪問。

3. 藍色部分:定義被盜鏈時替代的圖片,讓全部盜鏈 jpg、gif、swf 等文件的網頁,顯示網頁文檔根目錄下的about/ nolink.png 文件。注意:替換顯示的圖片不要放在設置防盜鏈的目錄中,而且該圖片文件體積越小越好。

固然你也能夠不設置替換圖片,而是使用下面的語句便可:RewriteRule .*\.(gif|jpg|png)$ - [F]

:[F] (強制URL爲被禁止的forbidden),強制當前URL爲被禁止的,即,當即反饋一個HTTP響應代碼403(被禁止的)。

 

方法2:經過判斷瀏覽器頭信息來阻止某些請求

即利用SetEnvIfNoCase和access。這個方法能夠經過阻止某些機器人或蜘蛛爬蟲抓取你的網站來節省你的帶寬流量。

語法: SetEnvIfNoCase attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...

 

注:Referer :指明瞭請求當前資源原始資源的URL,使用referer是能夠防盜鏈

(1.)在Apache主配置文件中找到對應的位置(或虛擬主機中),加入下列代碼:

SetEnvIfNoCase Referer "^$" local_ref
SetEnvIfNoCase Referer "www.benet.com/.*$" local_ref
SetEnvIfNoCase Referer "benet.com/.*$" local_ref
<filesmatch "\.(mp3|mp4|zip|rar|jpg|gif)">

#2.4版本以上,方法以下:
    Require all denied
    Require env local_ref
</filesmatch>

# 2.4版本如下的
# 方法一:
    Order Deny,Allow
    Allow from env=local_ref 
    Deny from all
# 方法二:
    Order Allow,Deny
    Allow from env=local_ref

 

 相關文章連接:Apache的防盜鏈配置及詳解      

           nginx如何設置防盜鏈

相關文章
相關標籤/搜索