Debugging `try_files` with 404 as a last resort

petecooper nginx-forum at
Wed Nov 14 01:30:08 UTC 2018

Francis Daly Wrote:

> Do you know whether the file that corresponds to the url /index.php
> exists?
> If it does exist, use
>   try_files $uri $uri/ /index.php?$args;
> If it does not exist, use
>   try_files $uri $uri/ =404;

Hello Francis. Thank you for your reply.

I have some servers where the `index.php` exists, and some where it does not
exist. I have been using the approach you outlined above successfully where
I know `index.php` exists (or not), I think my question could perhaps be
worded: is there a `try_files` option where I can have $uri, then $uri/,
then `index.php` and finally `=404` if all else fails.
> The final argument to try_files is a uri or =code. "code" is
> returned. "uri" is searched for across all locations (due to an
> internal
> redirect).
> The other arguments to try_files are files.

This is how I understood it, thank you for confirming!

> Does a file with the name $document_root/index.php?$args (expanding
> the
> two variables) exist? If not, processing will continue until the uri
> or
> =code at the end of the argument list.

I know the file `index.php` exists in the `root`. Would using the two
expanded variables in a log be sufficient to confirm Nginx can see it, or am
I missing something?

Thanks again, I am grateful for your time and assistance.

Posted at Nginx Forum:,281938,281940#msg-281940

More information about the nginx mailing list