Перенаправления Nginx с обработкой php запроса

Помоги пожалуйста разобраться с перенаправлениями Nginx.

Раньше сервер висел на Apache, но решили попробовать перевести его на nginx + php-fpm, все переехало и встало идеально, но осталась одна не работающая функция, а именно Rewrite из htaccess.

Смысл действия: при обращении к определенной странице 'ДОМЕН/api/sk2/timeslots/ЦИФРА' сервер перенаправляет запрос в php файл, который возвращает данные JSON в зависимости от метода.

Как видите есть 3 метода:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^api/sk2/timeslots/([^/]*)$ /wp-content/plugins/sk2/api/index.php?method=timeslots&room=$1 [L]
RewriteRule ^api/sk2/book/([^/]*)/?(.*)$ /wp-content/plugins/sk2/api/index.php?method=book&room=$1$2 [L,R,NE,QSA]
RewriteRule ^api/sk2/cancel/([^/]*)/([^/]*)$ /wp-content/plugins/sk2/api/index.php?method=cancel&id=$1&hash=$2 [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Вопрос, как этому же научить Nginx, простое использования автоматических конверторов кода не помогает, так как фактически сервер возвращает не полученные данные а страницу index.php и предлагает ее скачать.


Ответы (1 шт):

Автор решения: Danila Vershinin

Какой конвертер вы пытались использовать? Пробуйте с этим, результат корректный для вашей ситуации:

server {
    server_name example.com;
    rewrite ^/api/sk2/timeslots/([^/]*)$ /wp-content/plugins/sk2/api/index.php?method=timeslots&room=$1 last;
    rewrite ^/api/sk2/book/([^/]*)/?(.*)$ /wp-content/plugins/sk2/api/index.php?method=book&room=$1$2 last;
    rewrite ^/api/sk2/cancel/([^/]*)/([^/]*)$ /wp-content/plugins/sk2/api/index.php?method=cancel&id=$1&hash=$2 last;
    index index.php;
    location  {
        try_files $uri $uri/ /index.php$is_args$args;
    }
    ...
}
→ Ссылка