前言

要防止網站圖片被盜連 (hot-linking),有個很簡單的方法,這方法是運用一個名為「.htaccess」的檔案。沒錯,「.htaccess」已是完整的檔名,那一點前面什麼東西都沒有。只要上傳這一個檔案到空間的根目錄,不用修改任何現有檔案,就可以防止全站的圖片被盜連。

有一點觀念要釐清的是,這個檔名並非表示副檔名是 htaccess,正確的說法應該是這個檔案檔名就是 htaccess,沒有副檔名,然後在前面加一點是為了讓檔案屬性變為隱藏檔。所以那一點並非主檔名跟副檔名中間的那一點,不過是看起來以為是這樣罷了。

.htaccess 方法據說只適用Unix家族跟Apache建立起來的伺服器主機。不過,大部分網頁空間都符合條件吧。


建立檔案

用記事本建立一個純文字檔,檔名取為 temp.htaccess。前面temp那個名字隨你取啦,要先這樣做是因為Windows不允許那一點前面什麼都沒有,所以就先隨便給個名字,等上傳至空間主機後再把它砍掉。


編寫檔案

首先,取消記事本的「自動換行功能」,就是不使用,不勾選。這點很重要!

再來,寫入下四行語法即可:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?illusionland.net/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]

那個網址就表示這才是合法入口,這網址底下的所有圖片只能在這網址底下的頁面中呈現,如果別的網址的網頁直接連接這裡的圖片便無法呈現。

要注意填寫網址那裡關於 www 那個特殊之處,這寫法是為了讓語法能對 http://illusionland.net/http://www.illusionland.net/ 兩種網址都生效。所以請看清楚該如何置換成您自己的網站首頁位址。

這範例只防堵gif、jpg兩種格式,您可以依法填入更多格式,甚至影音檔或其它格式亦可,如下例:

RewriteRule \.(gif|jpg|png|mp3|wma|asf|htm|html)$ - [F]


上傳檔案

用FTP軟體上傳,上傳到空間的根目錄,用ASCII模式上傳。然後更改屬性為644。


改回正確檔名

上述步驟都完成後,最後是要將檔名改回「.htaccess」。但是要特別注意一點,一旦檔名改為「.htaccess」,這就是個隱藏檔,在FTP內就看不到,也就是改完檔名後就消失了。此後只有登入空間的 control panel,用它的線上 file manager 才能看到「.htaccess」這個檔案。

而改完檔名,只要一切步驟都正確,空間伺服器類型也符合條件,防止圖片盜連的功能就已經啟動,可正常運作了。


錯誤補救方式

如果步驟有錯,或是空間伺服器條件無法配合的話,.htaccess 檔不但無法運作,而且還可能造成嚴重問題,就是整個網站可能會無法開啟。

但說是嚴重問題,其實也只是小問題。正如前言就提到了,這方法只有上傳一個 .htaccess 檔,根本沒有修改任何原有檔案。所以如果方法行不通,再把 .htaccess 檔砍掉就可恢復原狀了。

可是如上一步驟所提的,這時在FTP軟體內已經看不到 .htaccess 了,要登入空間的 control panel 才能砍掉 .htaccess。


何謂防盜連

最後介紹一下基本概念:何謂防盜連 (hot-linking)?這防堵語法到底是防堵了什麼現象?

直接舉例說明吧。例如某人看出我網站某圖片的網址,直接拿回他自己網站,用 的語法將我的圖片直接放在他的頁面裡,成為網頁元素的一部份,這種情況 .htaccess 語法便可發揮作用,他的頁面上將無法呈現這張圖片,只會是個叉叉。

位址沒錯,圖片確實擺在那裡,但別人拿去放在他頁面裡的話圖片就無法呈現,這就是防圖片盜連。

但是,別人如果把位址直接輸入在IE的位址列,圖片還是會呈現出來。或是用Flashget等軟體來下載圖片,也可以把圖片取走。

再舉例影音檔。例如某人看出我網站某影音檔的網址,直接拿回他自己網站貼在頁面上產生連結,如這樣 http://illusionland.net/test.wma,那麼 .htaccess 能產生的防盜效果是:

1. 左鍵直接點選該連結,無法播放。
2. 右鍵另存新檔,可以把檔案存走。
3. 用Flashget等軟體,可以把檔案存走。
4. 複製網址再填入IE的位址列,可以開啟播放檔案。
5. 將該網址用embed語法或各式播放器播放,可以順利播放出來。

歸納來說,不管是圖片或影音檔,那些防不住的情況其實並不叫盜連,而根本是下載檔案。我個人是覺得 .htaccess 在防止圖片盜連方面,能防止圖片直接出現在別人的頁面就很夠用了,誰會無聊到一直把你的圖片網址直接輸入在IE的網址列呢?但若用 .htaccess 防止影音檔盜連就有一點點無謂,因為效果不彰,人家若要拿你的影音檔一定就是把檔案下載走,或是把位址拿去給embed語法、播放器使用,這都是 .htaccess 防不住的。