HTTP 請求攜帶 Referer 標頭表示來源頁面。伺服器檢查 Referer 是否為自家域名(或允許的搜尋引擎),非授權來源則回傳 403 或替換圖片,節省頻寬並保護資源。
RewriteEngine On
# 允許空 Referer(直接輸入圖片網址、書籤、部分代理)
RewriteCond %{HTTP_REFERER} !^$ [NC]
# 允許自家域名(含 www 子域)
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]
# 允許主流搜尋引擎抓取(利於 SEO)
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?(google|bing|baidu)\.com [NC]
# 匹配圖片副檔名,拒絕存取
RewriteRule \.(jpe?g|png|gif|webp|svg)$ - [F,NC,L]
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?(google|bing|baidu)\.com [NC]
# 替換為指定圖片(注意:警示圖放在不受防盜鏈保護的目錄,或用絕對路徑)
RewriteRule \.(jpe?g|png|gif|webp|svg)$ /assets/images/hotlink-placeholder.png [R,NC,L]
| 標記 | 含義 |
|---|---|
NC | No Case,不分大小寫匹配 |
F | Forbidden,回傳 403 |
R | Redirect,外部重導向(預設 302) |
L | Last,停止後續規則處理 |
RewriteRule \.(jpe?g|png|gif|webp|svg|pdf|zip|rar|mp4|mov)$ - [F,NC,L]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?(example\.com|partner\.com|cdn\.example\.com) [NC]
RewriteCond %{REQUEST_URI} !^/images/thumbs/ [NC]
RewriteCond %{REQUEST_URI} !^/images/watermark/ [NC]
LogFormat "%{Referer}i %U %h %l %u %t \"%r\" %>s %b" hotlink
CustomLog logs/hotlink.log hotlink env=hotlink_denied
SetEnvIf Request_URI "\.(jpe?g|png|gif)$" hotlink_check
# 配合 RewriteRule 設定 env 變數需額外模組,建議改用應用層記錄
644。AllowOverride,.htaccess 不生效,需修改 httpd.conf 或聯繫主機商。