我管理的域以前有很多 RSS 源,现在几乎全部消失了,但我仍然有大量流量在寻找这些源。我不确定处理这个问题的最佳方法是什么。查看一天的 apache 访问日志,大约 23% 的网站点击量来自源阅读器。
这里的“点击”是指我查看了当天访问日志中的每个条目......这可能不是正确的命名法 - 我不确定。
我为其中大多数提供了 301。这些网站的实际网络流量很小(我假设),但这个点击次数似乎一定有影响。
信息流已经消失年此时,这些肯定是僵尸 feed 阅读器。从日志中我可以看出,有多种类型:feedburner 和 feedfetcher 看起来是最常见的。
有什么办法可以解决这个问题吗?
答案1
您可以通过从主 httpd.conf(或适用的包含的配置片段)阻止不存在资源的点击来降低对不存在资源的点击的“成本”。
静止的Redirect
和/或RedirectMatch
指令在计算上应该比使用动态 mod_rewrite 规则更便宜,尤其是与从文件加载的规则相比.htaccess
。(虽然我没有确切的数字此引用建议如此。
作为已经建议HTTP 返回代码410
gone
是最合适的。或者,发送404 - file not found
状态代码也是合适的,Redirect
然后使用该指令可以防止 Web 服务器检查文件系统中是否存在不存在的资源,从而减少负载。
例如:
<VirtualHost *80>
ServerName example.com
ServerAlias www.example.com
# All RSS feeds under /rss/legacy/* are gone
Redirect gone "/rss/legacy"
# /rss/[alpha.rss, bravo.rss, ... sierra.rss] are gone,
# but /rss/tango.rss still exists
RedirectMatch gone "/rss/[a-s].*\.rss$"
# /rss/victor.rss has also been discontinued
Redirect 410 "/rss/victor.rss"
...
</VirtualHost>
为了进一步减少不再存在的内容的负载和带宽,您可能需要确保您没有在服务器返回状态“410 - 消失”时发送的友好(自定义)错误文档。即检查您的配置是否不是包括一个ErrorDocument 410
设置自定义错误页面,但未设置,ErrorDocument 410 default
或者ErrorDocument 410 "Gone"
答案2
如果您确定这些 URL 永远不会包含任何内容,您可以尝试返回410 Gone
对这些 URL 的请求。
410 Gone 当请求的内容已从服务器永久删除且无转发地址时,会发送此响应。客户端应删除其缓存和指向资源的链接。HTTP 规范旨在将此状态代码用于“限时促销服务”。API 不应被迫使用此状态代码指示已删除的资源。
但是,无法保证阅读器软件能够正确识别状态代码,并且它们仍可能只是重试加载提要 URL。
然后下一步可以封锁这些 IP 地址。但是,这也可能封锁合法流量,并且供稿软件的 IP 地址可能会发生变化 - 那么您需要更新封锁地址列表。