Rewrite problem http://x.x.x.x/folder_name/index.php/css/first.css

Francis Daly francis at daoine.org
Mon Nov 7 19:42:11 UTC 2011


On Mon, Nov 07, 2011 at 11:17:14AM -0500, mikolajj wrote:

Hi there,

> Apache and lighttpd can use URL
> http://x.x.x.x/folder_name/index.php/css/first.css as
> http://x.x.x.x/folder_name/index.php with REQUEST_URI part =
> "/css/first.css" - this is handle by PHP and processed along...
> 
> Nginx is trying to open index.php as folder an of course 404 is
> thrown...

Yes, that's how it is frequently configured by default.

You'll want to configure it to match your application.

>                 location ~ .php$ {
>                   fastcgi_pass   127.0.0.1:9000;
>                   fastcgi_index  index.php;
>                   fastcgi_param  SCRIPT_FILENAME
> /home/main-www$fastcgi_script_name;
>                   include fastcgi_params;
>                 }

That location matches urls that end in "php". Your url is
/folder_name/index.php/css/first.css, which doesn't end in php,
so you'll want to use some location setting that matches that url --
perhaps "starts with /folder_name/index.php/" will be best.

For testing, you could use "includes php", which would be

  location ~ php {}

but that is unlikely to be good for the live site.

Once you have the location definition correct, you'll want to use
fastcgi_split_path_info

http://wiki.nginx.org/HttpFcgiModule#fastcgi_split_path_info

and then you'll probably want to set PATH_INFO or REQUEST_URI or whatever
your application requires, like in the example there.

> Can you point me to some clues or solution?

Hopefully the above makes sense.

Either change your current "php" location to match all urls you want
handled by php; or make a new one that matches this location.

And use fastcgi_split_path_info.

And the debug log can be very useful if you get lost.

Good luck,

	f
-- 
Francis Daly        francis at daoine.org



More information about the nginx mailing list