利用.htaccess防止檔案或圖片被盜連

利用.htacces之前,必須先確定在apache的設定檔(/etc/apache2/httpd.conf)中找到一行設定值

AllowOverride All

若沒有則自行新增,如果有多台VirtualHost的話,則只要新增在需要此功能的VirtualHost即可,大概放在類似下面範例的位置。

<VirtualHost *:80>
  <Directory />
    AllowOverride All
  </Directory>
...
</VirtualHost>

記得改完設定值要重啟Apache

#ubuntu版本
sudo service apache2 restart

#centos版本
service httpd restart

接著在目錄底下新增.htaccess檔案,加入以下內容,

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

語法說明:

  • RewriteEngine
    啟用本功能
  • RewriteCond(觸發條件)
    本範例為當非來自於http://yosia.biz的請求時
  • RewriteRule (規則)
    若是要請求的檔案是jpg,jpeg...exe等檔案時,將請求轉向到403禁止讀取頁面
  • [F] 表示Forbidden, 即403頁面,可改為[R,NC](R表redirect,NC表忽略大小寫),並加上路徑參數,則可顯示指定的圖片或頁面,例如
    RewriteRule \.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ /path/error.jpg [R,NC]