Internal Server Error: /favicon.ico 的解决方法
项目大致环境:Linux + Apache + Django + Python
因为项目的需求重写了Python Logger.error 方法,每当记录错误日志的时候就发送一封邮件到指定的邮箱。项目运行其间收到了许多 Internal Server Error: /favicon.ico的错误邮件。
可奇怪的是错误日志中又没有关于Internal Server Error: /favicon.ico的记录,而且apache error日志中也没有相关的记录。
后来根据邮件发送的时间查看apache 的access 日志发现有这么一段(xxx.xxx.xxx.xxx 是用户请求的ip)
xxx.xxx.xxx.xxx - - [08/Aug/2013:11:28:17 +0800] "GET /favicon.ico HTTP/1.1" 500 295 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"
根据日志我做了以下猜测
1. 请求是来自浏览器(我的项目还有非浏览器的xmlrpc服务)
2. 请求是浏览器自己发出的,因为reference 只有是"-"
3. 项目的apache配置文件并没有对/favicon.ico进行处理,django的url 模块也没有对/favicon.ico进行处理
鉴于以上原因,浏览器机制我不懂而且也没有时间研究,即使找出发出请求的原因要求用户修改自己的浏览器设置也是不靠谱的。而配置django的url模块也不太理想。
所以最好的处理方式就是在apache配置文件中进行处理了,处理的方式很简单,在配置文件中添加这么一行
Alias /favicon.ico /your media path/favicon.ico