preventing rewrite loops with "index"
Igor Sysoev
igor at sysoev.ru
Fri Jan 22 18:01:27 MSK 2010
On Fri, Jan 22, 2010 at 03:06:47PM +0100, Dennis J. wrote:
> Hi,
> So with my first rewrite issue solved I now move closer towards the real
> configuration and run into a problem with the index directive.
>
> My location looks like this:
>
> location ~* ^/(([A-Za-z])([A-Za-z0-9])([A-Za-z0-9])[^/]*)(/.*)?$ {
> root /web;
> set $site_path /users/$2/$3/$4/$1/htdocs;
> set $real_uri $5;
> rewrite .* $site_path$real_uri break;
> }
>
> When I request "/test/index.html" the location matches and gets properly
> rewritten into a hashed form "/users/t/e/s/test/index.html". Then the root
> get prefixed resulting in the path "/web/users/t/e/s/test/index.html" which
> get correctly delivered by nginx. So far so good.
>
> The problem happens when I request "/test/" instead which should deliver
> the same index.html through the index directive. That doesn't happen though.
>
> Looking at the log what seems to happen is that nginx sees that
> "/web/users/t/e/s/test/" is a directory and issues a new request with the
> uri "/web/users/t/e/s/test/index.html". This however matches the above
> location again resulting in another rewrite that ends with a completely
> broken path and a 404.
>
> How can I get that the correct index processing for the first correctly
> rewritten path without triggering another round of location processing
> messing things up?
location ~* ^/(([A-Za-z])([A-Za-z0-9])([A-Za-z0-9])[^/]*)(/.*)?$ {
alias /web/users/$2/$3/$4/$1/htdocs$5;
}
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list