1

在切换 EC2 服务器时,我们经常更改 AWS 上的 IP 地址(是的,我们在适用时使用弹性 IP)。有时我们会获得用于托管其他应用程序的 IP 地址(当然这很好)。当最终用户点击过时的链接时,他们会访问我们的服务器(这没关系)。但是这些 HTTP GET 请求有一个“referer”标头,因此常规的 404 错误会自动生成一封 Django 电子邮件给我们的开发人员!

我可以使用以下 Python 代码轻松地重新创建错误电子邮件:

import urllib2
req = urllib2.Request('http://my_website.com/some/url/we/dont/have')
req.add_header('Referer', 'http://whatever.i.want')
request = urllib2.urlopen(req)

当Referer 标头被注释掉时,Django 不会发送电子邮件。
我们仍然希望在我们的网站中有真正损坏的链接时发送电子邮件,所以我不想设置SEND_BROKEN_LINK_EMAILS为 False。
我无法过滤使用IGNORABLE_404_URLS,因为 a. 逻辑是相反的,b。正则表达式只扫描路径而不是主机名。

帮助?

4

1 回答 1

1

我可能会打开一些捕获异常的中间件Http404,检查引用标头,然后引发单独的异常(尽管可能仍会通过邮件发送),或者进行简单的重定向到您的首页。更好的是,创建一个自定义页面来描述用户为何最终到达他们所在的位置,然后重定向到该页面。

于 2012-12-24T10:40:42.477 回答