如何配置 Nginx 在子目录上运行 php?

如何配置 Nginx 在子目录上运行 php?

我有 2 个版本的作品集网站,分别对应 2 种语言。我将它们放在同一个根目录中的两个目录中。

/root/
    |----vi/
    |----en/
    |----index.php

然后我按如下方式配置 nginx:

server {
    listen 8080;
    server_name 192.168.0.117;

    access_log /u01/projects/company/log/access.log main;
    error_log /u01/projects/company/log/error.log;
    set $rootLocation /u01/projects/company/;

    root $rootLocation;
    index index.php;

    charset utf-8;
    client_max_body_size 100m;

    location ~* /(vi|en)/admin(/|/.*\.php)$ {
       try_files $uri $uri/;
       gzip on;
       index index.php;
       include fastcgi_params;
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $rootLocation$fastcgi_script_name;
    }

    include common.conf;#some fastcgi config
}

看看location,我admin/为每个版本都设置了目录(并直接在此处运行 php)。但是当我访问 时192.168.0.117/en/admin/,浏览器总是重定向到192.168.0.117/en/index.php。这个配置有什么问题?如何修复?

答案1

问题在于:

       try_files $uri $uri/;

通过这样做,您明确告诉它重定向到index.php。尾随的/意思try_files是尝试指令的值index

在 PHP-FPM 中location,应改为:

       try_files $uri =404;

相关内容