Lighttpd mod_accesslog无法显示带有自定义错误页面的Request_URI

时间:2011-08-24 17:03:58

标签: http-headers webserver http-status-code-404 lighttpd access-log

我需要一些帮助来自定义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时使用的正确语法吗?

1 个答案:

答案 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");
?>