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