切换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
进行过滤,因为逻辑相反,并且b。正则表达式仅扫描路径,而不扫描主机名。救命?
最佳答案
我可能会敲出一些捕捉到Http404
异常的middleware,检查引荐标头,并引发一个单独的异常(尽管仍然可能会通过邮件发送),或者将其重定向到您的首页。更好的是,创建一个自定义页面来描述用户为什么会离开他们所在的位置,然后重定向到该页面。