如何禁止用户直接访问JS/CSS文件并跳转404?现有Rewrite规则失效
解决JS/CSS文件直接访问拦截问题
你的现有规则阻止页面正常加载,核心问题有两个:
- 仅匹配HTTP协议的Referer,HTTPS环境下正常加载资源的请求会被误拦截
- 使用
[F]标记返回403禁止状态,不符合你需要的404页面需求
修正后的规则
RewriteEngine On # 匹配非本站(HTTP/HTTPS)来源的请求,覆盖直接访问的空Referer场景 RewriteCond %{HTTP_REFERER} !^https?://(.+\.)?mysite\.com/ [NC] # 拦截JS/CSS文件并返回404状态码 RewriteRule \.(js|css)$ - [R=404,L]
规则说明
https?://同时兼容HTTP和HTTPS协议,确保本站页面加载资源时的合法请求不会被拦截[R=404]直接返回404状态码,服务器会自动调用你配置的自定义404页面[L]标记表示这是最后执行的规则,避免后续Rewrite规则干扰
自定义404页面版本
如果你的服务器有指定的自定义404页面(比如/404.html),可以用以下规则直接重定向:
RewriteEngine On RewriteCond %{HTTP_REFERER} !^https?://(.+\.)?mysite\.com/ [NC] RewriteRule \.(js|css)$ /404.html [R=404,L]
内容的提问来源于stack exchange,提问作者Tom Kine
相关产品推荐
相关产品推荐

