Requests ending with / (slash) are returning 404
Leonardo Crespo
leo at leocrespo.com
Wed Apr 7 14:25:08 MSD 2010
Thanks Igor, it makes sense now. Thanks for the link it was helpful too.
Cheers
Leo
2010/4/7 Igor Sysoev <igor at sysoev.ru>:
> 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/
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://nginx.org/mailman/listinfo/nginx
>
More information about the nginx
mailing list