如何使用htaccess规则拦截访问站点不存在的伪造PDF页面的流量
解决方案
可以通过.htaccess规则在请求触发默认404逻辑前直接拦截所有不存在的PDF访问请求,无需逐个添加410规则,批量处理效率远高于手动单条配置。
1. 通用批量拦截规则(推荐)
该规则不会影响站点内实际存在的PDF文件访问,仅拦截不存在的PDF请求:
<IfModule mod_rewrite.c> RewriteEngine On # 匹配所有后缀为.pdf的请求,不区分大小写 RewriteCond %{REQUEST_URI} \.pdf$ [NC] # 判断请求对应文件在服务器上不存在 RewriteCond %{REQUEST_FILENAME} !-f # 直接返回410状态,终止后续规则执行 RewriteRule ^ - [R=410,L] </IfModule>
参数说明:
[NC]:忽略大小写,可同时匹配.PDF、.Pdf等大小写混合的垃圾请求后缀!-f:仅触发不存在的文件请求,不会影响站点正常PDF资源的访问[R=410,L]:返回410永久删除状态码,L标记表示命中规则后不再执行后续重写逻辑,降低服务器资源消耗
2. 更高强度拦截方案(可选)
如果站点本身没有任何PDF资源,不需要保留合法PDF访问能力,可以直接拦截所有.pdf后缀的请求,执行效率更高:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule \.pdf$ - [R=410,L,NC] </IfModule>
补充说明
- 规则需要放在.htaccess文件的最顶部,确保优先执行,不会走到站点默认的404处理流程
- 410状态码比404对爬虫更友好,明确告知资源永久不存在,长期使用可减少爬虫后续的重复爬取请求
- 如果希望进一步降低资源消耗,可以将
[R=410,L]替换为[DENY,L],直接返回403禁止访问,无需返回额外的状态说明内容
内容的提问来源于stack exchange,提问作者Elliot Walker
相关产品推荐
相关产品推荐

