Best practice for URL rewriting with php parameter

Francis Daly francis at daoine.org
Wed Nov 11 15:47:09 UTC 2015


On Wed, Nov 11, 2015 at 02:29:37PM +0000, Mik J wrote:

Hi there,

> > I want that a user who accessesnginx.org/informationwill be redirected in the background tonginx/index.php?x=informationSo that my index.php page is dymanic
> 
> What does "redirected in the background" mean?M => I just meant that the user won't see the php parameters. He just sees a simple url with text only.Nginx passes the parameter to php, and not the user (through GET). That's what I meant by "in the background"

That's clear, thanks. In nginx terms, it's an internal rewrite.

> > I did like this in my virtual host configurationlocation /information { try_files information /index.php?x=information; }
> > I would like to know if:a) This is the best practice to do what I would like to do ?
> 
> I'd say "no".
> 
> I'm not fully sure what it is that you want to do, but I suspect that
> "rewrite" (http://nginx.org/r/rewrite) may be what you want; unless
> you will describe how /index.php is intended to be handled -- in which
> case just using (e.g.) fastcgi_pass with some suitable fastcgi_param
> directives might be even better.
> M => My index.php looks like this<?php
> if ($_GET['x']) == 'information') { echo "This is the information Page"; } 
> if ($_GET['x']) == 'contact') { echo "This is the contact Page"; } 
> ?>

Your nginx will have some way to cause your index.php to be
processed. Maybe it is proxy_pass to a php-enabled web server; maybe it
is fastcgi_pass to a fastcgi server, maybe it is something else.

If you do something like

  location = /information { rewrite ^ /index.php?x=information; }
  location = /index.php {
    fastcgi_pass ...;
    fastcgi_param SCRIPT_FILENAME $document_root$uri;
    fastcgi_param QUERY_STRING $query_string;
  }

then you could instead omit the rewrite, and just do something like

  location = /information {
    fastcgi_pass ...;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    fastcgi_param QUERY_STRING x=information;
  }

directly.

	f
-- 
Francis Daly        francis at daoine.org



More information about the nginx mailing list