如何用.htaccess防止圖片、檔案盜連?

一個圖文並茂的網站,最怕的就是文章轉貼,雖然現一直在尊重著作權法,但還是有許多人假裝沒看見?許多人喜歡「複製→貼上」,但這樣一個轉貼動作卻會對一個網站造成莫大的傷害,除了辛苦寫的文章被偷走外,連圖片也盜連!圖片或檔案被盜連最怕的就是後續的流量,為了避免這種問題,我們必須自立自強,防止盜連這種可惡的行為!

如果是cPanel虛擬主機,防盜連的方法不外乎就是到cPanel後台進行設定。如果你是其他類型的空間後台或者是說你只有FTP權限的空間,那該怎麼辦呢?其實只要你的空間支援.htaccess檔案並且支援ReWrite ,不論是何種的虛擬主機空間後台或者是用自己電腦架網站,你都可以防止圖片與檔案的盜連喔!

※  注  意

做任何修正前,記得先做好備份。

第1步 先新增一個「htaccess.txt」文字文件。

第2步 開啟該文字文件,輸入以下程式碼:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://sofree.twbbs.org/.*$ [NC]
RewriteRule \.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ - [F]

語法小說明

»RewriteCond:設定哪些是允許存取的連線。

所以上方程式碼,你可以把http://sofree.twbbs.org改成你網站網址,這樣就會允許你網站可以讀取檔案。如果你想要允許多個網站,就按照上面的RewriteCond寫法,看要讓幾個網站可以連,就加幾串語法就可以了!

»RewriteRule:指定哪些檔案不可盜連,盜連後的錯誤訊息顯示設定。

»[F]:顯示錯誤訊息為文字,403 Forbidden是禁止讀取。

範例

RewriteRule \.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ - [F]

»[R,NC]:顯示錯誤訊息為圖片

範例

RewriteRule .*\.(jpg|gif|png|bmp|rar|zip|exe)$ /content/no_hotlink.jpeg [R,NC]

»任何檔案或圖片都被盜連

請把

RewriteRule \.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ - [F]

改成

RewriteRule .*$ - [F]

這樣所有檔案都會自動被限制住,只有上面RewriteCond有設定的網址才可以讀取,而若遇到盜連者,他那邊圖片或檔案將不會顯示出來。

第3步 調整完後,請將您的「htaccess.txt」上傳到網站根目錄,並且將檔案改名為「.htaccess」即可。

請記得開啟FTP的顯示隱藏檔案功能,如果不會開請參考這篇教學:

如果你空間中很來就有.htaccess檔案,那請將檔案下載回來,開啟後在最下方加上先前那串語法,但「RewriteEngine on 」不用加入。

用.htaccess防止圖片、檔案盜連

設定完成後,這樣就已經開始防盜連囉!不過若你設定錯誤,很可能連你自己網站也讀不到檔案與圖片,趕快到自己網站看一下是否一切安好呢?如果設定錯誤,又找不出原因,建議你先把.htaccess檔案砍掉,這樣就會恢復正常連線,然後再重新設定一次看看吧!

另外,在文章一開始有提到,「圖片或檔案被盜連最怕的就是後續的流量」為什麼呢?因為盜文者因為是「複製→貼上」,所以圖片、檔案的原始位置都還在你這邊,如果有人在他那邊下載檔案,那麼檔案原始連結還是連到你空間,網站流量還是吃你的!轉貼很可能一文多貼,結果圖片檔案都吃你的流量,但是網站人氣卻不屬於你自己的,這樣不僅損失人氣,還白白消耗流量,這樣很不划算吧?

參考網站

在Google News上追蹤我們最新文章
香腸
香腸

喜歡在網路上透過文字與圖片分文章教學,默默地用鍵盤烤了9年的香腸。另外還身兼阿腸接案餬口飯吃。對了,別叫我阿腸,請叫我香腸,這樣我才知道你看我部落格長大的。

文章: 1781

20 則留言

  1. 請問…
    因為我想把www的網址轉到沒有www的網址,在.htaccess裡面設定成這樣:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
    RewriteRule ^(.*)$ http://yourdomain.com/$1 [L,R=301]

    這樣是能成功把www轉到非www,
    但是它會自動把img.yourdomain.com轉到yourdomain.com/img
    請問該怎麼解決呢?

  2. 香腸您好~
    我用.htaccess一直都無法成功,網頁都會錯誤開不起來
    我是用httpd.conf這樣檔去防盜連的
    有什麼方法分享文章到Facebook跟google+可是顯示縮圖的??

    我發現您好像沒有設防盜連???!!!

  3. 想請問 香腸 如果主機是vps 架設的wp 有什麼方式可以防止圖片被盜連

    香腸回應:
    沒有,只能用.htaccess去防而已…
    被盜了通常都只能摸摸鼻子

  4. 香腸你好:

    最近在弄wordpress部落格,身為新手的我很喜愛你的文章!
    很棒的教學文^^

    另外想請教一下~
    關於.htaccess這檔案的防盜連.保護目錄.擋搜尋引擎…等設定,對於子網域也能發揮功效嗎?還是說子網域也得再設定呢?

    例如:
    有個子網域為http://xxx.sofree.twbbs.org/
    那麼語法需要改寫成如下述這樣?
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^http://sofree.twbbs.org/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://xxx.sofree.twbbs.org/.*$ [NC]
    RewriteRule \.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ – [F]

    煩請指教,謝謝^^

    香腸回應:
    以子網域來說,他一定有對應的根目錄,放在它的根目錄就可以了。
    子網域改法應該就是以上那樣,你可以先試試看~
    這部分我也還在摸~

  5. 不好意思, 冒昧請教一下.
    目前看到的好像都是設定”白名單” (我不是很懂)
    請問有方法可以只設”黑名單”嗎??

    香腸回應:
    目前沒看過耶~

  6. 你好 我照著你的步驟做~~還是可以盜連耶
    我是用GoDaddy主機,應該有支援.htaccess檔案並且支援ReWrite吧@@?
    那個.htaccess是 只要 放在/帳號/下放一個就ok了嗎??還是在檔案(圖片)目錄下都要放?

    不知那裡出錯~~煩請指點一下 謝謝^^

    香腸回應:
    如果放根目錄就會影響到所有資料夾,如果你是個別資料夾放,那就是有放的才會受到影響。
    仍有問題可以上討論區: http://sofree.tw

  7. 我在網路上有看到教學文
    是有關利用.htaccess擋USER AGENT的
    google HTTP_USER_AGENT+htaccess
    大概10篇有9篇教學一樣吧
    我很納悶的是
    我在語法中加上
    RewriteCond %{HTTP_USER_AGENT} ^FlashGet 後
    仍然沒辦法檔flashget…

    是否語法錯誤?

    謝謝

    香腸回應:
    抱歉,這部分我就沒有多研究了。

  8. 就是找不到才來問的,我真的不知道要用什麼關鍵字,我找不到教學

    站長回答:多上網爬爬Google

    讓人很受傷…

    那有google就不用來sofree了嗎?

    香腸回應:
    我們很多東西也是問Google的 ~ 大家都靠Google 吃飯的XD
    有些東西只是一種標準用法,關鍵字使用「.htacess + [NC + R]」就可以查到了。
    R 就是轉向的意思
    NC 指的是不區分大小寫
    L 的作用是指明本次轉向到此結束,後續的轉向不受先前判斷語句的影響
    F 指圖片
    大概是這樣子囉~ :)

  9. [F]]:顯示錯誤訊息為為文字
    [R,NC]:顯示錯誤訊息為圖片

    那麼單純 [NC] 是什麼含意呢???
    那麼單純 [R] 是什麼含意呢???

    [F,NC]又是什麼意思呢?

    如果不要單純文字也不要單純圖片,而是要顯示自製網頁(包含圖片),那是要用哪一個語法呢?

    謝謝XD

    香腸回應:
    多上網爬爬Google~

  10. 漏掉一段~XD
    #限制檔名
    ㄝFilesMatch “\.(zip|rar|doc|gif|jpg|jpeg|ZIP|RAR|DOC|GIF|JPG|JPEG)”ㄡ
    這行有ㄝㄡ的符號包起來…秀不出來。ˊˋ

    香腸回應:
    用COOLCODE包~~

  11. 如果是自己Win系統的電腦灌Apache的話可以修改httpd.conf這個參數檔
    這檔案除了子網域設定外也可以防盜連喔~
    例外清單內的都是搜尋引擎儲存暫存頁面用的,這樣快取頁面才會有圖。^_^

    範例:
    #防檔案盜連

    Options FollowSymLinks Includes
    AllowOverride AuthConfig Limit

    Order allow,deny
    Allow from all

    #網站主機
    SetEnvIfNoCase Referer “^http://www.joytown.tw/” local_ref=1
    SetEnvIfNoCase Referer “^http://mail.joytown.tw/” local_ref=1
    SetEnvIfNoCase Referer “^http://ftp.joytown.tw/” local_ref=1
    SetEnvIfNoCase Referer “^http://imis.joytown.tw/” local_ref=1
    SetEnvIfNoCase Referer “^http://blog.joytown.tw/” local_ref=1
    SetEnvIfNoCase Referer “^http://joytown.tw/” local_ref=1
    #例外清單
    SetEnvIfNoCase Referer “^http://www.google.com.tw/” local_ref=1
    SetEnvIfNoCase Referer “^http://72.14.207.104/” local_ref=1
    SetEnvIfNoCase Referer “^http://72.14.235.104/” local_ref=1
    SetEnvIfNoCase Referer “^http://203.84.199.31/” local_ref=1
    #限制檔名

    Order Allow,Deny
    Allow from env=local_ref

    附註:屌了!範例檔有我網址,打廣告意圖明顯。XD

    香腸回應:
    太詳細了….(筆記)
    我知道你這是廣告,所以我家的akismet先把你擋住了XD

  12. 用.htaccess 的方法防盜連
    效果還蠻不錯的
    但那應該只限於放在自己主機的才有效吧??
    例如放Flickr 或其他圖空
    應該都沒效吧?? 雖然Flickr 流量是沒有限制 :mad:

    香腸回應:
    對阿…只限自己的主機~像我們就可以丟在圖床防盜連哩~我已經丟了XD
    至於flickr那就沒辦法了….有好有壞~

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料