nginx和codeigniter”;传递uri”;不起作用


nginx and codeigniter "passing uri" does not work

我有一个小的Codeigniter项目,传递uri(localhost/project/index.php/Cfoo/funct/param)不起作用(404)。php代码是可以的,因为使用lighttpd是可行的。

我的nginx配置:

user  www www;
worker_processes 1;
worker_priority 15;
pid /var/run/nginx.pid;
events {
  worker_connections  512;
  accept_mutex on;
  use kqueue;
}
http {
    include       conf.d/options;
    include       mime.types;
    default_type  application/octet-stream;
    server {
        server_name localhost;
        index index.php index.html index.htm ;
        add_header  Cache-Control "public";
        add_header  X-Frame-Options "DENY";
        limit_req   zone=gulag burst=200 nodelay;
        expires     max;
        listen 80;
        root /usr/local/www;
        location ~ ^/~([^/]+)/(.+'.php)$ {
            if (!-f /home/$1/public_html/$2) {
                rewrite ^ 404;
            }
            alias /home/$1/public_html/$2;
            fastcgi_pass unix:/var/run/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            include fastcgi_params;
        }
        location ~ ^/~(.+?)(/.*)?$ {
            alias /home/$1/public_html$2;
            index  index.html index.htm index.php;
            autoindex on;
        }

        location /adminer {
            index adminer/index.php;
        }

        location / {
            try_files $uri $uri/ /index.php;
        }
        index index.php index.html index.htm ;
        location ~ '.php$ { include conf.d/php-fpm; }
        location = /favicon.ico { return 204; }
        location ~* '.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl('.php)?|xtmpl)$|^('..*|Entries.*|Repository|Root|Tag|Template)$|'.php_ { deny all; }
        location ~ /'. {
                deny all;
                access_log off;
                log_not_found off;
        }
    }
}

编辑服务器部分:

    server {
        server_name orarend;
        root /home/zsolt/public_html/orarend_oo/;
        index index.php;
        add_header  Cache-Control "public";
        add_header  X-Frame-Options "DENY";
        limit_req   zone=gulag burst=200 nodelay;
        expires     max;
        location / {
            try_files $uri $uri/ /index.php$request_uri$is_args$query_string;
            autoindex on;
            fastcgi_pass unix:/var/run/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            include fastcgi_params;
        }
        location ~ '.php$ { include conf.d/php-fpm; }
    }

这会起作用,并且不需要将index.php放在url 中

User替换为实际用户的家庭

server {
  root /home/User/public_html/project;
  location / {
    try_files $uri $uri/ /index.php$request_uri$is_args$query_string;
  }
}