需手动启用mod_rewrite并配置AllowOverride All,防盗链规则须严格匹配Referer、防伪造且避免空值误拦,大型图片库应结合PHP鉴权或签名URL。

确认 mod_rewrite 已启用且 .htaccess 可生效
XAMPP 默认不启用 mod_rewrite,也默认禁用用户目录下的 .htaccess 解析——直接扔规则进去肯定没反应。必须手动改两处:httpd.conf 里确保 LoadModule rewrite_module modules/mod_rewrite.so 这行没被注释;再找到你网站根目录对应的 <directory></directory> 块(通常是 "C:/xampp/htdocs"),把里面的 AllowOverride None 改成 AllowOverride All。改完不重启 Apache,等于白改。
写防盗链规则时 Referer 匹配要防漏、防误拦
常见错误是正则写得太松或太紧:!^https?://yourdomain\.com 不加结尾 /,会误放 yourdomain.com.evil.site 这类域名;漏掉 !^$ 条件,会导致书签访问、微信内嵌浏览器、某些隐私模式下图片直接打不开;大小写不敏感必须加 [NC],否则 YOURDOMAIN.COM 就被拦了。实际建议这样写:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?trusted-site\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [F]注意:- [F] 表示返回 403,比跳转更轻量;若要用占位图,URL 必须放在站外或至少不在受保护目录里,否则会循环请求。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
大型图片库需警惕 Referer 可伪造和空值场景
Referer 是客户端发来的 HTTP 头字段,可被任意修改或清空(比如 HTTPS 页面引用 HTTP 图片时浏览器会主动抹掉它)。所以它只适合做“流量过滤”,不能当权限控制用。如果你的图片涉及用户私密内容,光靠防盗链毫无意义——得走 PHP 层鉴权或签名 URL。另外,高并发下 mod_rewrite 规则解析有开销,若图片请求量极大,建议用 mod_setenvif 替代,性能更好,但配置更底层,一般小站没必要折腾。
Windows 下 .htaccess 文件名和编码容易出错
在资源管理器里直接右键新建文本文件并改名为 .htaccess,Windows 会自动吞掉点号,结果变成 htaccess(无扩展名);正确做法是用记事本「另存为」,文件名填 ".htaccess"(带英文双引号),编码选 UTF-8 无 BOM 或 ANSI。如果 Apache 报 Invalid command 'RewriteEngine',大概率是文件根本没被识别——用 error.log 查有没有 Failed to parse 提示。
真正起作用的永远是 Apache 核心层拦截,PHP 里检查 $_SERVER['HTTP_REFERER'] 只是补漏,此时带宽和解析已消耗完。别让防盗链规则写在 PHP 里,那是自欺欺人。

















