Замена 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