如何通过.htaccess允许<frame>加载.htm文件并阻止直接访问?
解决HTML4 Frame加载.htm文件但禁止直接访问的.htaccess配置
你之前的.htaccess规则错误拦截了自身Frame的合法请求,问题出在正则书写、条件逻辑和未覆盖直接访问场景这几点。以下是修正后的配置:
RewriteEngine On # 拦截非本站来源或直接访问的.htm文件请求 RewriteCond %{HTTP_REFERER} !^https://(www\.)?your-domain\.com [NC,OR] RewriteCond %{HTTP_REFERER} ^$ RewriteRule \.htm$ - [F,L]
配置说明
- 把
your-domain\.com替换为你实际的域名(注意点号需要用反斜杠转义) - 第一条规则:匹配非本站域名的请求来源,
[NC]表示不区分大小写,[OR]表示满足任意一条条件即执行拦截 - 第二条规则:匹配Referer为空的场景(也就是用户直接在地址栏输入.htm文件URL的访问)
[F]标记返回403 Forbidden状态码,[L]表示停止后续规则处理,避免冲突
原规则问题分析
- 两个
RewriteCond默认是AND关系,重复的正则会导致合法的本站请求被误判 - 正则未写完整域名后缀和结束符,匹配逻辑不严谨
- 未覆盖直接访问时Referer为空的核心场景,反而错误拦截了本站Frame的合法加载请求
内容的提问来源于stack exchange,提问作者Nijn
相关产品推荐
相关产品推荐

