Rewrite or internal redirection cycle?

Igor Sysoev igor at sysoev.ru
Fri May 20 09:34:36 MSD 2011


On Thu, May 19, 2011 at 09:20:55AM -0400, TECK wrote:
> Hi,
> 
> I'm having a bit of an issue with the rewrite scheme:
> 
> server {
> ...
> 	location / {
> 		try_files		$uri $uri/ @data;
> 	}
> 
> 	location @data {
> 		rewrite ^		/data.php$is_args;
> 		internal;
> 	}
> ...
> }
> 
> When I access this request:
> http://domain.com/information/feedback/?order=desc&sort=date
> 
> I get an internal redirection cycle:
> *1 rewrite or internal redirection cycle while processing "/data.php?",
> client: IP, server: domain.com, request: "GET
> /information/feedback/?order=desc&sort=date HTTP/1.1", host:
> "domain.com", referrer: "http://domain.com/information/feedback/"
> 
> However, if I access this request:
> http://domain.com/information/feedback/400028-some-information.html
> 
> Everything works properly. What do you recommend to do, in order to
> troubleshoot the issue?
> My goal is to actually log what goes wrong with the php code, when the
> redirection cycle is encountered.
> 
> Thanks for your help.

You should either add "break" to stop internal redirection cycle:

	location @data {
		rewrite ^	/data.php$args  break;
	}

or should define /data.php in try_files

	location / {
		try_files	$uri $uri/ /index.php?$args;
	}

or (my favorite) should define exactly what nginx should do in @data:

	location @data {
		fastcgi_pass  ...
		fastcgi_param  SCRIPT_FILENAME  /path/to/data.php;
		...
	}

The later way looks more complex at the first sight, but it creates
independed locations and allows configuration to grow at very large scale.


-- 
Igor Sysoev



More information about the nginx mailing list