.htaccess防盗链对同主机其他域名无效的解决咨询
解决同主机多域名的防盗链问题
嘿,我懂你现在的困扰——主域名的防盗链已经正常生效,但同主机下的其他托管域名还能被随意盗链,对吧?咱们来调整一下Rewrite规则,让所有域名都能享受到防盗链保护。
问题根源
你原来的规则应该只针对主域名的Referer做了允许判断,其他托管域名的Referer没被纳入允许列表,导致这些域名的资源没法被防盗链规则覆盖,外部网站就能随意盗链它们的资源了。
修改后的规则示例
把所有托管在这个主机下的域名都加入到允许的Referer列表里,用[OR]条件串联起来:
RewriteEngine on # 允许直接访问资源(空Referer的情况,比如用户直接在地址栏输入资源URL) RewriteCond %{HTTP_REFERER} !^$ # 允许来自主域名的Referer,加[OR]表示或的关系 RewriteCond %{HTTP_REFERER} !^https?://(www\.)?your-main-domain\.com/ [NC,OR] # 添加第一个其他托管域名,同样加[OR] RewriteCond %{HTTP_REFERER} !^https?://(www\.)?your-other-domain1\.com/ [NC,OR] # 添加第二个其他托管域名,最后一条不要加[OR] RewriteCond %{HTTP_REFERER} !^https?://(www\.)?your-other-domain2\.com/ [NC] # 对需要保护的资源后缀生效,返回403禁止访问 RewriteRule \.(jpg|jpeg|png|gif|css|js)$ - [F,L]
关键说明
- 替换实际域名:把示例里的
your-main-domain.com、your-other-domain1.com等换成你自己的真实域名,注意域名里的.要加反斜杠转义(比如\.com)。 [NC]标记:开启不区分大小写模式,兼容不同大小写的域名访问(比如Your-Domain.com和your-domain.com)。https?://:同时匹配HTTP和HTTPS协议的Referer,覆盖两种访问场景。- 资源后缀:根据你的需求调整
RewriteRule里的后缀列表(比如可以加上svg、webp、mp4等)。 - 简化正则(可选):如果你的域名有统一的后缀(比如都是
*.your-brand.com),可以用正则简化规则,比如:
但要注意别写得太宽泛,避免误允许无关域名的请求。RewriteCond %{HTTP_REFERER} !^https?://(www\.)?.*your-brand\.com/ [NC]
这样修改后,所有来自你托管域名的Referer都会被允许,外部网站的盗链请求就会被拦截并返回403禁止访问啦。
内容的提问来源于stack exchange,提问作者like2think
相关产品推荐
相关产品推荐

