Re: 405 Not Allowed в Php скрипте.Post запрос

Sergey Shepelev temotor на gmail.com
Чт Июл 22 16:08:28 MSD 2010


2010/7/22 No1 <nginx-forum at nginx.us>:
> Подскажите тогда как его выгнать из
> статического локейшена.

location / {
  root ...;
  # обратите внимание, index index.php нет. Все запросы со слешом
(директории) "не найдутся" и уйдут в @php.
  try_files $uri @php;
}

location @php {
  fastcgi_pass   backend;
  fastcgi_index  index.php;
  ...
}

В данном случае fastcgi_index нужен. (А у вас был не нужен, потому что
в location ~ \.php$ запросы оканчивающиеся на / не попадали)

> И где почитать что же значит index index.php в
> данном локейшене.Делится на статику(index
> index.php) и динамику (fcgi_index
> index.php)получается?
>

http://sysoev.ru/nginx/docs/http/ngx_http_index_module.html
здесь

Что было и могло быть:
1) Пришёл запрос /basket/?st=1, ну без аргументов /basket/.
2) попал в location /
3) поскольку в локейшне нет *_pass, то он "статический". Отработала
проверка "POST в статику" и вы получили 405
4) index index.php; делает внутренний редирект на /basket/index.php
5) запрос попадает в location ~ \.php$
6) поскольку в локейшне есть *_pass, то он "не статический", проверять
на POST не надо
7) запрос уходит бекенду.

Видимо, вы ожидали, что проверка 3) будет сделана после редиректа 4).
Я бы тоже так ожидал. Но сделано иначе.


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