Understanding alias (used as rewrite)

Edho Arief me at myconan.net
Mon Jun 22 18:21:02 UTC 2015


On Mon, Jun 22, 2015 at 7:05 PM, E.B. <emailbuilder88 at yahoo.com> wrote:
> Hi, I'm confused about the details of "alias" used as
> a kind of rewrite (which should be more efficient as
> I understand it, as long as its appropriately used).
>
> I found I can do this:
>
> location = /path/number/one.html {
>   alias /some/other/path/script.php;
>   include fastcgi.conf;
> }
>
> So I was confucsed why this not working:
>
> location ^~ /my-long-prefix-goes-here  {
>   alias /another/different/path/anotherscript.php;
>   include fastcgi.conf;
> }
>
> In other words, alias of exact location match does
> a cheap "rewrite" perfectly. But now I want to match
> addresses like:
>
> /my-long-prefix-goes-here
> /my-long-prefix-goes-herexxx
> /my-long-prefix-goes-here/
> /my-long-prefix-goes-here/filename
>
> Only the first one works, the others are 404. Is
> Nginx adding the tail end of the matched prefix
> to the aliased location? I tried to make my alias:
>
> alias /another/different/path/anotehrscript.php?;
>
> so the stuff on the end turns into a query arg which
> php can ignore. But that didn't work.
>
> I also tried to use regex to match the location:
>
> location ~ ^/my-long-prefix-goes-here  {
>
> But now NONE of the addresses work - even the
> exact match is 404. Why??
>
> I found this was the only way to make it work:
>
> root /another/different/path;
> rewrite ^(.*)$ /anotehrscript.php break;
>
> In this situation is rewrite the only solution?
>

You're probably looking for this

fastcgi_param SCRIPT_FILENAME /another/different/path/anotehrscript.php;



More information about the nginx mailing list