Re: Пустой массив $_POST
Maxim Dounin
mdounin на mdounin.ru
Вт Дек 21 13:34:33 MSK 2010
Hello!
On Tue, Dec 21, 2010 at 11:24:10AM +0200, star0x4b at gmail.com wrote:
> Здравствуйте.
>
> Есть конфиг сайта, работающего на zend framework. Перенаправление
> несуществующих страниц на index.php осуществлялось с помощью директивы
> error_page 404, но тут появилась проблема - POST-запросы передавались от
> нжинкса в php пустыми. GET-запросы при этом передаются нормально. Если
> же перенаправлять с помощью реврайта - все работает. Но использовать
> реврайты некошерно, поэтому хотелось бы понять, что не так с error_page?
При перенаправлении по error_page в обычный uri - метод запроса
меняется на GET. Это сделано для того, чтобы error_page мог
выполнять свою основную функцию: возвращать страницы ошибок (e.g.
статический файл /404.html очень удивиться, если в него попытаются
сделать POST).
Если метод запроса менять не нужно, то надо использовать
перенаправление в именованный location. I.e.
error_page 404 = @fallback;
location @fallback {
...
}
> Конфиг приведен ниже.
>
> server {
> listen 80;
> server_name servername.ru;
> root /usr/local/www/repos/servername.ru/public;
> access_log /var/log/nginx/zfproject_main_access.log;
> error_log /var/log/nginx/zfproject_error.log;
>
> index index.php;
> # error_page 404 = /index.php?$args;
> rewrite ^(/.*)$ /index.php last;
Если вас устраивает такой rewrite (т.е. вообще всё отправляется на
/index.php), то всё это вообще не нужно. Достаточно сделать так:
location / {
fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
...
}
Maxim Dounin
Подробная информация о списке рассылки nginx-ru