error_page and log_not_found in nginx 0.7.8
Steffen Weber
nginx at steffenweber.net
Tue Aug 12 14:58:03 MSD 2008
Igor Sysoev wrote:
> On Mon, Aug 11, 2008 at 10:20:36AM +0200, Steffen Weber wrote:
>
>> I think I'm either misunderstanding the purpose of the log_not_found
>> directive or maybe there is a bug in nginx 0.7.8. In May 2008 Igor
>> recommended [1] the following configuration snippet to hand off all
>> requests for non-existing files to PHP:
>>
>> location / {
>> error_page 404 = /index.php;
>> }
>>
>> But this creates an entry in my error_log for each request that is
>> handed off to PHP. Michael Shadle then pointed me to the log_not_found
>> directive, but adding "log_not_found off;" to the configuration file
>> does not seem to have any effect, no matter where I put it (http, server
>> or location block).
>>
>> The error I get originates from src/http/modules/ngx_http_index_module.c
>> and reads
>>
>> 2008/08/11 10:04:17 [error] 5887#0: *1 "/doc/root/artikel/index.php" is
>> not found (2: No such file or directory), client: 127.0.0.1, server:
>> www.example.org, request: "GET /artikel/ HTTP/1.1", host:
>> "www.example.org", referrer: "http://www.example.org/"
>>
>> What am I doing wrong?
>>
>> I could, of course, change the error_log directive to only log critical
>> events, but I fear that I would miss some (more) important errors then.
>
> The attached patch should fix the bug.
I still have one problem when using this method: First I noticed that
the redirected requests were missing the GET data, but I was able to
solve this problem by using
error_page 404 = /index.php?$args;
instead of
error_page 404 = /index.php;
But POST data is missing, too. At least the $_POST array in PHP is empty
when the request is redirected by the error_page directive. However, the
cookies somehow make it through. How can I solve this problem?
I have reverted to the following configuration for now:
if (-f $request_filename) {
break;
}
rewrite ^ /index.php last;
Kind regards
Steffen Weber
More information about the nginx
mailing list