Я пытаюсь развернуть веб-приложение для создания служб 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. Возможно ли это, и если да, то как? Существующий rewrite
s Я пробовал такие как rewrite ^/index.php/(.*) /$1 permanent;
и rewrite ^(.*)$ /index.php
не похоже, чтобы добиться цели.
заранее спасибо
Ричард Смит ответил на мой вопрос выше; замена =404;
часть try_files
линия в моем location /
директива с (эквивалентом) /local/index.php$uri;
позволяет продолжить выполнение запросов php, как если бы они получили доступ к соответствующему index.php, но не отображая их в адресе и не влияя на способность приложения запускать свои внутренние сценарии. Спасибо, Ричард!