nginx + last rewrite
skeletor
nginx-forum at nginx.us
Mon Mar 24 13:22:04 UTC 2014
Всем привет.
Не получается правильно написать last rewrite. Суть в следующем: при запросе
URL'a вида http://domain.com/events/blabla.html нужно его среврайтить на
http://domain.com/events/blabla.php и выполнить этот php не меняя основного
URL'a. На сервере в папке лежит именно events/blabla.php. Все остальные
php-скрипты отрабатываются нормально.
Вот код nginx'a
location / {
index index.php;
}
location /events {
rewrite ^/events/(.*)\.html$ $1.php last;
}
location ~ .php$ {
include fastcgi_params;
fastcgi_pass unix:/var/tmp/php.sock;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /home/www/sites/domain.com;
fastcgi_param SCRIPT_FILENAME
/home/www/sites/domain.com$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED
/home/www/sites/domain.com$fastcgi_script_name;
}
Пробовал по-разному:
- выносил rewrite в корень сайта, помещал в lacation /
- добавлял fastcgi_ в location /events (пробовал разные вариации с
fastcgi_param SCRIPT_FILENAME)
При запросе в логе вот такое:
FastCGI sent in stderr: "Primary script unknown" while reading response
header from upstream, client: XX.XX.XX.XX, server: domain.com, request: "GET
/events/brand-awards-2013.html HTTP/1.1", upstream:
"fastcgi://unix:/var/tmp/php.sock:", host: "domain.com"
Я так понимаю, по какой-то причине не передаётся правильно сам php-скрипт
дальше, на fastcgi. Не могу понять, как это исправить.
Заранее спасибо.
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,248623,248623#msg-248623
Подробная информация о списке рассылки nginx-ru