Attempt to rewrite using slightly deprecated /foo.php/bar/ methods

Igor Sysoev is at rambler-co.ru
Tue Oct 27 08:55:44 MSK 2009


On Mon, Oct 26, 2009 at 09:30:58PM -0700, Michael Shadle wrote:

> Okay I'm trying to request
> 
> http://dev.foo.com/login for example, I get this:
> 
> 2009/10/26 21:29:04 [error] 22831#0: *1 open()
> "/home/mike/web/foo.com/loader.php/login" failed (20: Not a
> directory), client: 192.168.1.2, server: dev.foo.com, request: "GET
> /login HTTP/1.1", host: "dev.foo.com"
> 
> Here's the server block... I tried following your instructions.
> 
>    server {
>       listen 80;
>       server_name dev.foo.com;
>       root /home/mike/web/foo.com;
>       index index.php index.html;
>       location ~ \.php$ {
>          fastcgi_pass 127.0.0.1:11000;
>       }
>       location / {
>          try_files $uri $uri/ /loader.php$uri;
>       }
>       location /loader.php {
>          fastcgi_split_path_info ^(/loader\.php)(.*)$;

+          fastcgi_pass 127.0.0.1:11000;
+          fastcgi_param  SCRIPT_FILENAME  /path/to/php$fastcgi_script_name;
+          fastcgi_param  PATH_INFO        $fastcgi_path_info;

>       }
>    }
> 
> 
> 
> 2009/10/26 Igor Sysoev <is at rambler-co.ru>:
> > On Sun, Oct 25, 2009 at 09:23:02PM -0700, Michael Shadle wrote:
> >
> >> I have a script which has aliases like /login and such. If the file
> >> does not exist, it's supposed to go to
> >>
> >> /controller.php/login
> >>
> >> Where controller.php will look up based on the URI and a whitelist of
> >> aliases and load the appropriate script. However when I try this:
> >>
> >> if (!-e $request_filename) {
> >>   rewrite ^(.+)$ /controller.php/$uri last;
> >> }
> >>
> >> I get an infinite loop.
> >>
> >> Is there a way to setup some sort of rewrite (I also tried try_files)
> >> to make this behavior happen? I tried hacking the controller script
> >> but I'm worried changing it from URI parsing to a GET argument will
> >> mess up other internals of the script (it's a third party script)
> >>
> >> Thanks... I've done this in Zeus and Apache before but apparently
> >> never tackled it in nginx yet.
> >
> >   location / {
> >       # damned "if", neutral "error_page", or blessed "try_files" :)
> >   }
> >
> >   location /controller.php {
> >       fastcgi_split_path_info     ^(/controller\.php)(.*)$;
> >       ...
> >   }
> >
> >
> > --
> > Igor Sysoev
> > http://sysoev.ru/en/
> >
> >

-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list