為了節約頻寬,很多Servers都會設置一些反盜連(Hotlink Protection)措施,通常通過檢查HTTP referer來決定連線是否來自自己的Domain,這些措施大多用來保護圖片免受其他網站盜連,不過稍為修改一下,都可以用來保護FLV免受盜連。常用方法有兩種:
編輯.htaccessRewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(flv|mp3)$ - [NC,F,L]
編輯httpd.conf,首先啟動此:
LoadModule setenvif_module modules/mod_setenvif.so
將以下Code放在<VirtualHost>裡,可以放在</VirtualHost>之前:SetEnvIfNoCase Referer "^http(s)?://(www\.)?yourdomain.com(/|$)" local_ref=1
SetEnvIfNoCase Referer "^$" local_ref=1
<FilesMatch "\.(flv|mp3)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
可惜,FLV需要通過Flash Player去播放,不同Browsers甚至不同版本處理Plugin中的HTTP Referer都是不同,所以以上反盜連方法來保護FLV根本是沒有可能 :(
Browser |
傳回Plugin本身網址(即最理想情況:SWF的網址) |
沒有傳回Referer |
傳回本身嵌入SWF的網頁的網址 |
IE |
X |
|
|
Firefox |
|
X |
|
Safari (MAC) |
|
|
X |
Safari (Win) |
|
X |
|
<Chrome 3 |
|
|
X |
Chrome 3+ |
X |
|
|
<=Opera 9 |
|
|
X |
Opera 10+ |
X |
|
|
當你好像Youtube般,容許其他人在他們網頁中放一段HTML Code去播放你的Flash Video Player,反盜連保護就會出問題,從以上總結可見,第三直行的Browser就會出問題,例如Safari (MAC),影片根本不能播放,因為Apache 認為FLV正被其他網站盜連,拒絕FLV的傳送要求。
|