.htaccess - 阻止访问虚假 PDF 页面的流量
问题描述
我的网站有很多 404 点击到网站上从未存在的 PDF 页面。这些都是 spammy-subject.pdf URL。我每天得到几十个,这比真正的网站流量要高得多。
我目前正在为每个添加 410 次重写。
我可以使用 htaccess 规则完全阻止此流量到达此站点吗?在它变成404之前?
解决方案
我可以使用 htaccess 规则完全阻止此流量到达此站点吗?
您可以使用.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 没有任何优势,除非这些文件以前存在并且您正试图将它们从搜索引擎中删除(或告诉第三方它们不再存在)。
更新:
此代码应该在最顶部还是在开始的 Wordpress 规则之后: RewriteEngine On ?
它需要位于最顶部,在注释# BEGIN WordPress
标记之前(您应该避免手动编辑 WordPress 部分中的代码,因为 WordPress 本身维护该部分并且您的编辑将被覆盖)。
是的,这是在RewriteEngine On
指令之前。您不需要重复该RewriteEngine
指令。指令的位置RewriteEngine
实际上并不重要。如果文件中有该指令的多个实例,则最后一个实例获胜并控制整个文件。(这是一种快速有效地注释掉文件中所有 mod_rewrite 指令的方法,只需在最后RewriteEngine Off
放置一个指令。)
推荐阅读
- android - 如何在调试模式下使用自己的密钥库文件签署 apk?
- kubernetes - 有条件地排除块
- javascript - 试图在反应中更新计数器的状态
- javascript - 如何使用 dotenv (.env) 自动将 NODE_ENV 从开发更改为生产
- javascript - 如何将 javascript 文件加载到 ac# 控制台应用程序中
- python - 使用堆栈实现队列时无法理解 pop()
- java - 使用 Apache POI 在 Excel 工作簿之间复制单元格
- dynamics-crm - 从 Web 应用程序中,我可以查询动态实体字段选项集吗?
- java - 将 word 文档读入处理时出错
- laravel - Infyom Swagger:路径参数问题