Temperage
Temperage

Reputation: 721

Lighttpd mod_accesslog cannot display Request_URI with custom error pages

I need some help to customize my access log on Lighttpd 1.4.28. So far I have been able to modify the configuration to display the date in a strftime(3) format. The default date format is just way too long. Here are the relevant lines from /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"

And here is my access.log entry:

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"

Customizing the date was not hard, but I ran into a problem trying to display request URL while simultaneously using custom 404 pages. I just added

server.error-handler-404 = "/error.html"

to the lighttpd.conf file, and the lighttpd_access.log now contains redirected /error.html, instead of the full url of the request that generated the error.

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"

I have also tried adding %{Request_URI}i, but the log entry was - blank. Anyone knows the correct syntax to use when trying to display the original request URL in conjunction with custom 404 pages?

Upvotes: 1

Views: 1254

Answers (1)

swamp3r
swamp3r

Reputation: 26

This isn't an exact fix to your issue but if your goal is just to find out what URLs are broken - use a PHP file instead for your error handler -- you can still redirect to error.html (if you so wish)

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

Upvotes: 1

Related Questions