8 messages in ru.sysoev.nginxRe: try_files for alias
FromSent OnAttachments
Edho P AriefJun 16, 2009 7:57 pm 
Edho P AriefJun 16, 2009 8:35 pm 
Edho P AriefJun 18, 2009 6:07 am 
Igor SysoevJun 18, 2009 7:10 am 
Edho P AriefJun 18, 2009 7:40 am 
Edho P AriefJun 19, 2009 1:30 am 
Edho P AriefJun 19, 2009 1:33 am 
Edho P AriefJun 19, 2009 7:51 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: try_files for aliasActions...
From:Igor Sysoev (is@rambler-co.ru)
Date:Jun 18, 2009 7:10:14 am
List:ru.sysoev.nginx

On Wed, Jun 17, 2009 at 09:57:41AM +0700, Edho P Arief wrote:

How do I make this work?

location ~ /~someapp(.*)$ { alias /home/someapp/root$1; try_files $uri /~someapp/err404.htm; }

The try_files never catch the $uri (nor $1) and returns 500 (redirection cycle)

Am I 'forced' to use error_page in this case?

This works:

location ~ /~someapp(.*)$ { alias /home/someapp/root$1; error_page 404 /~someapp/err404.htm; }

and without regex the error_page and try_files seem to be completely ignored: neither location /~someapp/ { alias /home/someapp/root/; error_page 404 /~someapp/err404.htm; } nor location /~someapp/ { alias /home/someapp/root/; try_files $uri /~someapp/err404.htm; } works.

If request is "/~someapp/one", then this location

location /~someapp/ { alias /home/someapp/root/; try_files $uri /~someapp/err404.htm; }

will test /home/someapp/root/one existence.

As to

location ~ /~someapp(.*)$ { alias /home/someapp/root$1; try_files $uri /~someapp/err404.htm; }

this "alias" with captures is special case. A "root" is always just prefix to URI and "try_files" tests "root$uri". An "alias" without captures replaces location part in URI with the "alias" value, and "try_files" tests "alias/modified_uri" An "alias" with captures replaces a whole URI with the "alias" value, and "try_files" tests "alias/$uri", and $uri is surpplus here. You need just to pass empty value to "try_files":

location ~ /~someapp(.*)$ { alias /home/someapp/root$1; try_files "" /~someapp/err404.htm; }