Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Apache .htaccess 防盜鏈配置全攻略:RewriteRule 實現圖片/視頻/文件保護

編輯:關於伺服器

盜鏈直接消耗源站帶寬、加速流量成本、影響正常用戶體驗。Apache 通過 mod_rewrite 在 .htaccess 中實現基於 Referer 的防盜鏈,零成本、即時生效、無需重啟服務。

前置條件

  • Apache 載入 mod_rewrite 模組 (`LoadModule rewrite_module modules/mod_rewrite.so`)。
  • 站點目錄 `AllowOverride All` 或 `AllowOverride FileInfo` (允許 .htaccess 覆蓋)。

核心配置代碼 (放置於網站根目錄 .htaccess)

RewriteEngine On

# 1. 允許空 Referer (用戶直接在瀏覽器地址欄輸入圖片 URL)
RewriteCond %{HTTP_REFERER} !^$ [NC]

# 2. 允許自身域名 (含子域名)
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?example\.com [NC]

# 3. 允許主流搜索引擎/閱讀器抓取 (SEO/用戶體驗)
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?(baidu|google|bing|yahoo|sogou|360|feedly|feedburner|feedsky)\.com [NC]

# 4. 執行防盜鏈:匹配目標副檔名 → 重定向至替換圖片 或 返回 403
# 方案 A:返回替換圖片 (推薦體驗較好)
RewriteRule \.(gif|jpg|jpeg|png|bmp|webp|svg|mp4|flv|f4v|m3u8|ts|pdf|zip|rar|apk)$ /static/images/hotlink-denied.png [R,NC,L]

# 方案 B:直接返回 403 Forbidden (節省帶寬,無替換圖片請求)
# RewriteRule \.(gif|jpg|jpeg|png|bmp|webp|svg|mp4|flv|f4v|m3u8|ts|pdf|zip|rar|apk)$ - [F,NC,L]

指令詳解

標誌含義
NCNo Case,大小寫不敏感
RRedirect,發送 302 重定向 (可加 =301 永久重定向)
LLast,停止後續規則處理
FForbidden,直接返回 403,不重定向

關鍵細節與最佳實踐

  1. 替換圖片放置位置:必須放在 **未受防盜鏈保護的目錄** (如 `/static/images/`),且該目錄需在 RewriteRule 排除範圍內,否則會陷入無限重定向循環。
  2. 替換圖片體積:< 1KB (純色 PNG/Base64 內嵌 CSS 更佳),避免被盜鏈時產生二次流量。
  3. CDN 環境**:若前端有 CDN (Cloudflare、阿里雲 CDN),請在 CDN 控制台配置防盜鏈 (Referer 白名單、Token 鑒權、User-Agent 過濾),**邊緣攔截比回源攔截更省成本**。
  4. HTTPS 站點**:Referer 頭在 HTTPS→HTTP 跨協議請求中可能被瀏覽器省略,建議全站 HTTPS 並允許空 Referer。
  5. 調試技巧**:瀏覽器開發者工具 Network 面板查看圖片請求的 `Referer` 請求頭、響應狀態碼、重定向鏈。

進階:Token 防盜鏈 (簽名 URL、帶時間戳、一次性)

Referer 可偽造,高價值資源 (付費視頻、私密文檔) 建議應用層生成簽名 URL (如 /video/lesson1.mp4?sign=xxx&t=1700000000),Nginx/Apache `ngx_http_auth_request_module` / `mod_auth_token` 驗證簽名與過期時間,徹底杜絕盜鏈。

Copyright © Windows教程網 All Rights Reserved