Question to say "I can!"

.htaccess實現圖片防盜鏈

2010-02-27

防盜鏈是個永遠不會過時的話題,尤其是對流量有限的博客空間里的圖片!

所謂盜鏈,是指其他網站直接鏈接我們網站上的文件,一般來說,盜鏈的對象大多為很耗帶寬的大體積文件,如圖片、視頻等。這樣造成的后果主要有:增加了服務器的流量負擔,影響我們網站的訪問速度。

通過.htaccess來防止網站的圖片、壓縮文件、或視頻等非Html文件被盜鏈的方法相當簡單,通過在該文件中加入幾句命令即可保護我們寶貴的帶寬。

在.htaccess中添加下面代碼

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !renniaofei.com [NC]
RewriteCond %{HTTP_REFERER} !ikuaizi.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteRule .*.(gif|jpg)$ http://domain.com/no.png [R,NC,L]

對上面代碼的解釋說明
1、RewriteCond %{HTTP_REFERER} !^$ [NC]
允許空“HTTP_REFERER”的訪問,即允許用戶在瀏覽器地址欄中直接輸入圖片地址時圖片文件的顯示。一般而言,這是可選的,不過,建議這么設置,如果強迫必須具有“HTTP_REFERER”才能訪問,可能會帶來某些問題,比如說在用戶通過代理服務器訪問時。

2、RewriteCond %{HTTP_REFERER} !domain.com [NC]

設置允許訪問的HTTP來源,包括我們的站點自身、Google、Baidu、Bloglines、Feedburner等。

3、RewriteRule .*.(gif|jpg|png)$ http://domain.com/no.png [R,NC,L]

定義被盜鏈時替代的圖片,讓所有盜鏈 jpg、gif、png 等文件的網頁,顯示根目錄下的 no.png 文件。注意:替換顯示的圖片不要放在設置防盜鏈的目錄中,并且該圖片文件體積越小越好。當然你也可以不設置替換圖片,而是使用下面的語句即可:

RewriteRule .*.(gif|jpg|png)$ – [F]

4、說明一下其中的R、NC 和 L

R 就是轉向的意思
NC 指的是不區分大小寫
L 的作用是指明本次轉向到此結束,后續的轉向不受先前判斷語句的影響

5、防止盜鏈的文件類型

上例中是 gif、jpg、png,而根據需要,可更改或添加其他文件類型,如rar、mov等,不同文件擴展名間使用“|”分割。

這樣的話,就可以基本做到簡單的防止被盜鏈情況的發生,而且可以盡最大可能的減少服務器流量的無畏消耗,當然了,如果你不在意這點流量的話,那么可以不用考慮上述設置啦!

功能擴展
RewriteRule .*.(gif|jpg)$ http://domain.com/no.png [R,NC,L]

他 的作用是,當請求以 jpg、gif 為擴展名的文件,如果referer 字段不能匹配 http://*.renniaofei.com* 這個表達式時,服務器返回 302 狀態碼,重定向到 http://domain.com/no.png。為了增加流量,我們也可直接定向到自己的網站。

只需將
RewriteRule .*.(gif|jpg)$ http://domain.com/no.png [R,NC,L]
修改為
RewriteRule .*.(gif|jpg)$ http://domain.com/ [R,NC,L]

作者:admin | Categories:互聯網問題 | Tags:

一條評論

  1. admin說道:

    又看到一個功能:
    使用.htaccess強制網站使用https訪問

    如果是在根目錄下

    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

    如果是在subfolder下

    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80
    RewriteCond %{REQUEST_URI} subfolder
    RewriteRule ^(.*)$ https://www.domain.com/subfolder [R,L]

發表評論

電子郵件地址不會被公開。 必填項已用*標注

*

澳洲f1赛车b盘开奖套路 北京快三助手 天津快乐十分单双软件 欢迎登录模拟炒股 天天彩选4怎么玩 基金配资是什么意思 海南4+1开奖 股票配资门户 找恒瑞行配资 上期平码推算下期平码 25选5开奖结果走势图 河南481走势图今天 加拿大快乐8开奖作弊吗 腾讯5分彩官方网站 黑龙江22选5开奖公告 淘股吧十大高手 上海快三分析技巧 福建11选五开奖玩法