Назад | Перейти на главную страницу

Nginx - Перенаправление для удаления index.php из пути

Я пытаюсь развернуть веб-приложение для создания служб REST. Приложение создано с использованием PHP, а также веб-сервера BYO и программного обеспечения базы данных. Я использую Nginx и MySQL (MariaDB). Мне удалось развернуть его, используя следующую конфигурацию Nginx:

server {
    listen 80;
    listen [::]:80;

    root /var/www/fusio;
    index index.php index.html index.htm;

    server_name localhost;

    location / { 
       try_files $uri $uri/ =404;
    }

    location ~ ^.+.php {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;

        set $path_info $fastcgi_path_info;
        fastcgi_param PATH_INFO $path_info;

        try_files $fastcgi_script_name =404;

        include         fastcgi_params;
        fastcgi_pass    unix:/run/php/php7.3-fpm.sock;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index   index.php;
    }

}

Когда я развертываю новые конечные точки в приложении, они развертываются в http: //localhost/local/index.php/my_url. Я бы хотел, чтобы они развернулись в http: // локальный / my_url. Разработчик приложения, знакомый с Apache, предложил включить mod_rewrite, что, как я понимаю, по сути является возможностью перенаправления.

Я хочу знать, как я могу сделать то же перенаправление в Nginx, не нарушая настроенную мной конфигурацию fastcgi. Возможно ли это, и если да, то как? Существующий rewrites Я пробовал такие как rewrite ^/index.php/(.*) /$1 permanent; и rewrite ^(.*)$ /index.php не похоже, чтобы добиться цели.

заранее спасибо

Ричард Смит ответил на мой вопрос выше; замена =404; часть try_files линия в моем location / директива с (эквивалентом) /local/index.php$uri; позволяет продолжить выполнение запросов php, как если бы они получили доступ к соответствующему index.php, но не отображая их в адресе и не влияя на способность приложения запускать свои внутренние сценарии. Спасибо, Ричард!