阻止访问虚假 PDF 页面的流量

Block access for traffic to fake PDF pages

我的网站有很多 404 次点击,指向网站上从未存在过的 PDF 页面。这些都是垃圾邮件-subject.pdf 网址。我每天收到几十个,这比真正的网站流量高得多。

我目前正在为每个添加 410 次重写。

我可以使用 htaccess 规则完全阻止此流量到达此站点吗?在它变成 404 之前?

Can I use htaccess rule to totally block this traffic from reaching this site?

您可以使用 .htaccess 来防止请求通过使用前端控制器模式的 CMS(例如 WordPress、Joomla 等)进行路由 - 如果这就是您所说的“站点”。但是,在处理 .htaccess 文件时,请求已经到达您的 服务器 ,因此在 .htaccess 中执行任何操作不一定会帮助“静态站点”。

如果您已经返回 404(或 410)- 在它到达您的 网站 之前 - 那么问题已经解决。

唯一的潜在问题是,如果请求是通过您的 CMS 路由的,并且 404 是由您的 CMS 而不是 Apache 触发的。这会建议您将指令放在 .htaccess 文件中的错误位置(或根本不存在)?在任何现有重写之前,像这样的阻塞指令需要位于 .htaccess 文件的顶部。

例如:

# Prevent 404 request being routed unnecessarily through CMS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.pdf$ - [NC,R=404]

提供 410 Gone 而不是 404 没有任何优势,除非这些文件以前存在并且您试图将它们从搜索引擎中删除(或告诉第 3 方它们不再存在)。

更新:

Should this code be at the very top or after the opening Wordpress rule: RewriteEngine On ?

它需要在最上面, # BEGIN WordPress 评论标记之前(您应该避免手动编辑 WordPress 部分中的代码,因为 WordPress 本身维护这个部分,您的编辑将被覆盖)。

是的,这是在 RewriteEngine On 指令之前。您不需要重复 RewriteEngine 指令。 RewriteEngine 指令的位置实际上并不重要。如果该指令在文件中有多个实例,那么 last 实例将获胜并控制整个文件。 (这是一种有效注释掉文件中所有 mod_rewrite 指令的快速方法,只需在 末尾 处放置一个 RewriteEngine Off 指令即可。)