Nginx-重定向以从路径中删除index.php

Nginx-重定向以从路径中删除index.php

我正在尝试部署一个用于构建 REST 服务的 Web 应用程序。该应用程序使用 PHP 构建,您可以自行安装 Web 服务器和数据库软件。我使用的是 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,据我了解,这实际上是一种重定向功能。

我想知道如何在不破坏我设置的 fastcgi 配置的情况下在 Nginx 中执行相同的重定向。这可能吗?如果可以,怎么做?rewrite我尝试过的现有方法(例如rewrite ^/index.php/(.*) /$1 permanent;和)rewrite ^(.*)$ /index.php似乎不起作用。

提前致谢

答案1

Richard Smith 回答了我上面的问题;用(等同于)替换我的指令中的行=404;部分允许 php 请求继续,就像它们已经访问了相应的 index.php 一样,但不会在地址中显示它们,也不会影响应用程序运行其内部脚本的能力。谢谢 Richard!try_fileslocation //local/index.php$uri;

相关内容