Requests ending with / (slash) are returning 404
Igor Sysoev
igor at sysoev.ru
Wed Apr 7 13:45:15 MSD 2010
On Wed, Apr 07, 2010 at 07:26:31PM +1000, Leonardo Crespo wrote:
> I can't make sense of those 2.
>
> > try_files $uri.php ${uri}index.php =404;
>
> This means: if the uri is xxx, try to serve xxx.php. If you can't,
> try serving xxxindex.php. If you can't still, return 404.
Yes. Note, that ${uri}index.php is for "xxx/", i.e. "xxx/index.php".
> > try_files $uri.php $uri/ =404;
>
> This means: if the uri is xxx, try to serve xxx.php. If you can't,
> try serving xxx/ . If you can't still, return 404.
>
> Correct? They both work fine, what is the difference between them?
The trailing slash in "$uri/" tests that $uri, i.e., "xxx" or "xxx/"
is a directory. Further directory handling depends on directives.
If you use
location / {
try_file ... $uri/ ...
index index.php;
}
then nginx will test index file for request, look
http://nginx.org/en/docs/http/request_processing.html#simple_php_site_configuration
If you use
location / {
try_file ... $uri/ ...
fastcgi_pass ...
fastcgi_index index.php;
}
then nginx will add index.php to $uri in $fastcgi_script_name
for request with trailing slash.
> On Wed, Apr 7, 2010 at 7:16 PM, Edho P Arief <edhoprima at gmail.com> wrote:
> > On Wed, Apr 7, 2010 at 4:10 PM, Leonardo Crespo <leo at leocrespo.com> wrote:
> >> Hi Edho, thanks.
> >>
> >> Igor mentioned i should keep this to avoid serving php as static files.
> >>
> >> location ~ \.php$
> >> {
> >> fastcgi_pass 127.0.0.1:9000;
> >> fastcgi_intercept_errors on;
> >> fastcgi_index index.php;
> >> include /usr/local/nginx/conf/fastcgi_params;
> >> fastcgi_param SCRIPT_FILENAME
> >> /home/public_html/boysdownunder.com.au/public/$fastcgi_script_name;
> >> }
> >>
> >> Will it conflict with this?
> >>
> >>> location ~ \.php$ {
> >>> return 404;
> >>> }
> >>
> >
> > as all php requests (usin are passed to @php block (or / block in
> > Igor's example), there shouldn't be any problem.
> >
> > And in my example it should be
> >
> > try_files $uri.php ${uri}index.php =404;
> >
> > instead of
> >
> > try_files $uri.php $uri/ =404;
> >
> >
> > --
> > O< ascii ribbon campaign - stop html mail - www.asciiribbon.org
> >
> > _______________________________________________
> > nginx mailing list
> > nginx at nginx.org
> > http://nginx.org/mailman/listinfo/nginx
> >
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://nginx.org/mailman/listinfo/nginx
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list