如果你有服务器权限,直接分析Nginx的日志就行了,一条404请求的日志如下所示:
60.247.113.42 - - [07/Jul/2011:17:46:29 +0800] "GET /aaaaaaaa HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
另外Nginx的404页面是可用自定义的,在自定义的404页里,你可以通过Ajax或者其他方式记录来记录当前的网址。
fastcgi_intercept_errors on;
server
{
listen 80;
server_name www.XXX.com;
index index.html index.htm index.php;
error_page 404 = /404.htm;
include location.conf;
root /home/www/logs;
}
404页的代码可以通过js获取网址传到指定的php页面:
document.write('');
test.php是你要记录404访问网址的php程序,可用获取访问的网址:
$url = $_GET["ref"];
//....do something
?>
不过经过测试,发现上面的自定义404页的方法还是挺有弊端的,会受浏览器的设置影响,像我的ie浏览器就会跳到ie自己的404页,根本不会显示上面我们自定义的页面,所以建议最好还是直接分析Nginx的日志