我需要一些帮助来自定义Lighttpd 1.4.28上的访问日志。到目前为止,我已经能够修改配置以strftime(3)格式显示日期。默认日期格式太长了。以下是/etc/lighttpd/lighttpd.conf
accesslog.format = "%s [%{%d%b-%H:%M}t] %h %b %U * %{From}i|%{Via}i|%{Referer}i *
accesslog.filename = "/web/lighttpd_access.log"
这是我的access.log条目:
404 [24Aug-16:55] 98.68.178.112 345 /phpMyAdmin/scripts/setup.php * -|-|- * "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1"
自定义日期并不难,但是在尝试显示请求URL同时使用自定义404页面时遇到了问题。我刚刚添加了
server.error-handler-404 = "/error.html"
到lighttpd.conf
文件,lighttpd_access.log
现在包含重定向的/error.html
,而不是生成错误的请求的完整网址。
200 [24Aug-16:06] 98.68.178.112 1 /error.html * -|-|- * "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1"
我还尝试添加%{Request_URI}i
,但日志条目为-
为空。任何人都知道在尝试与自定义404页面一起显示原始请求URL时使用的正确语法吗?
答案 0 :(得分:1)
这不是对您的问题的确切修复,但如果您的目标只是找出哪些网址被破坏 - 使用PHP文件代替您的错误处理程序 - 您仍然可以重定向到error.html(如果您这样做)希望)
lighttpd.conf:
server.error-handler-404 = "/error.php"
error.php:
<?
$brokenpath = $_SERVER["REQUEST_URI"]."\n";
$out = fopen("/foo/bar/404.txt", "a"); // save broken urls here
fputs($out, $brokenpath);`
fclose($out);
header("Location: http://domain.com/error.html");
?>