如何通过.htaccess禁止网站资源被直接通过链接访问?
如何通过.htaccess阻止资源被直接链接访问
你的当前.htaccess规则存在核心问题:RewriteCond %{HTTP_REFERER} !^$这一行允许了空Referer的请求(比如直接在地址栏输入链接的情况),这就是直接访问视频链接仍能生效的原因。
修正后的.htaccess规则
RewriteEngine On # 仅允许来自本站的Referer请求访问指定资源 RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com/ [NC] RewriteRule \.(jpg|jpeg|png|gif|mp3|wav|mp4|webm|ogg)$ - [NC,F,L]
规则说明
- 移除了
RewriteCond %{HTTP_REFERER} !^$,这样直接访问(空Referer)的请求会被拦截,返回403禁止访问 - 在Referer匹配规则末尾添加
/,避免误匹配到类似example.com.otherdomain.com的外部域名 [F,L]标记中,F表示返回403状态码,L表示停止后续规则处理,确保当前规则优先生效
额外提示
- 你设置的video标签限制(禁用右键、下载按钮等)仅为前端表层限制,用户可通过开发者工具、第三方工具轻松绕过,服务器端规则才是防盗链的核心
- 部分浏览器或隐私插件会屏蔽Referer,可能导致合法用户也被拦截。如果需要更严谨的验证,可结合后端会话(如PHP Session)配合.htaccess检查,但这需要后端语言支持。普通防盗链场景下,上述规则足以应对绝大多数直接访问的情况
内容的提问来源于stack exchange,提问作者user23204753
相关产品推荐
相关产品推荐

