Замена if на try_files

Sergey Kobzar sergey.kobzar на itcraft.org
Вт Дек 13 18:23:57 UTC 2011


Приветствую

Пытаюсь заменить

if (!-e $request_filename) {
	rewrite '(?i)^' /$subfolder/index.php last;
}

на

location / {
	try_files $uri /$subfolder/index.php;
}

в

server {
	server_name server.com;
	access_log /var/log/nginx/access.log main;
	error_log /var/log/nginx/error.log debug;

	if ($request_uri ~ ^/([^/]*).*$) {
		set $subfolder $1;
	}

	root /home/www/server.com/htdocs;
	index index.html index.php;

	error_page 404 /$subfolder/index.php?page=404;

	location / {
		try_files $uri /$subfolder/index.php;
	}

	location ^~ /$subfolder/errors/ {
		...
	}

	location ~* \.(css|gif|html|ico|jpg|js|pdf|png)$ {
		...
	}

	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9001;
		fastcgi_index index.php;
		include /etc/nginx/fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param SERVER_NAME $host;
	}
}


С if - все ОК.

Если использую try_files - не видно GET в PHP из запроса вида 
http://server.com/project/?some_variable=1

Что не так? Видимо запрос попадает не в тот локейшн?



Подробная информация о списке рассылки nginx-ru