Php

無法讓 Codeigniter URL 在 Nginx 上執行

  • May 19, 2013

在我的 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 頁面。

看起來你需要使用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;

引用自:https://serverfault.com/questions/509058