无法让 Codeigniter URL 在 Nginx 上运行

无法让 Codeigniter URL 在 Nginx 上运行

在 Windows 上成功设置 nginx 后,我遇到了另一个问题。虽然一切正常。我可以访问页面,PHP 运行正常,但当我尝试使用 Codeigniter 类型的 URL 时,问题就出现了,我的意思是,

https://localhost/index.php/<controller>

即使我在“index.php”后插入一个斜线,No input file specified也会抛出错误,我认为这意味着 FastCGI 服务器无法捕获正确的文件。这是我的配置文件,

server {
    server_name localhost;
    listen 443; 
    root /wamp/www/;

    ssl on;
    ssl_certificate /wamp/www/server.crt;
    ssl_certificate_key /wamp/www/server.key;

    location / {        
        index index.php index.html index.htm;
    }

    location /NavHawk2 {
        try_files $uri $uri/ index.php/;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
            fastcgi_intercept_errors on;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
    }
}

错误日志和访问日志中没有任何内容是 404 请求。如果我删除 try_files 行,则会得到一个 nginx 404 页面。

答案1

看起来你需要使用fastcgi_split_path_info

一个例子:

fastcgi_split_path_info       ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO       $fastcgi_path_info;

相关内容