404 location problem

Maxim Dounin mdounin at mdounin.ru
Thu Jan 14 05:55:10 MSK 2010


Hello!

On Wed, Jan 13, 2010 at 09:31:34PM -0500, lnxa wrote:

> this configure
> can't visit www.abc.com/blog/index.php error 404
> but can visit www.abc.com/blog/info.txt
> I don't know how to do?
> please tell me! thanks.
> 
> 
> server {
>     listen       80;
>     server_name  www.abc.com;
>     root /data0/www/abc;

1. server root is /data0/www/abc.

>     index index.htm index.html index.php;
> 
>     location /blog/ {
>     root /data0/www;

2. location /blog/ has root redefined into /data0/www, so 
"/blog/info.txt" will be searched in file "/data0/www/blog/info.txt".

>     }
>     #php fastcgi
>     location ~ .*\.php?$ {

Just a side note: did you mean "~ \.php$"?  Prefix ".*" 
meaningless as it matches everything, and "?" looks strange since 
you probably don't want ".ph" files to be passed to php.

>         fastcgi_pass   127.0.0.1:9000;
>         fastcgi_index  index.php;
>         #fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
>         include        fastcgi.conf;

3. location ~ \.php$ has no root explicitly defined, and therefore 
uses one inherited from server, i.e. "/data0/www/abc".  So 
"/blog/index.php" will be mapped into 
"/data0/www/abc/blog/index.php".

Note: resulting file names in 2 and 3 are very different.  If you 
want them to be in the same directory - you probably want to 
define identical roots for both locations (i.e. define correct 
one in server and don't redefine in locations).

>     }
>         
> 
>     access_log  /var/log/nginx/access.log  main;
> }

Maxim Dounin



More information about the nginx mailing list