CodeIgniter在nginx下rewrite配置问题

昨天在服务器上安装了Codeigniter,同时修改了nginx相关配置,ci能够正常运行了。php

但今天在作表单提交时又出现了问题,问题以下:html

在我以前的rewrite配置下,ci的正常url为http://localhost/example/news/ 此url能够正常访问nginx

http://localhost/index.php/example/news/ 此url返回404页面服务器

ci中生成form的函数 open_form('example/news')默认的提交action为http://localhost/index.php/example/news/app

因此当我提交表单时老是提示404错误,开始我觉得是form表单出了问题,可查阅资料后发现本身的写法并无问题,然后发现访问上面两个url出现了不一样页面,正常状况下二者应该相同,就此我断定应该是url重写或者是ci配置有问题。函数

查阅资料后发现,在application/config/config.php中的$config['index_page']要从新设置。url

默认的配置
$config['index_page'] = 'index.php';
此处要改成
$config['index_page'] = '';

同时要注意code

uri_protocol配置要改成
$config['uri_protocol'] = 'PATH_INFO';

nginx配置也要修改orm

server {
    listen       80;
    server_name  test;
        

    rewrite_log on;
    error_log /data/logsnginx/test_nginx_error.log info;
    

    location / {
        index index.html index.htm index.php;
        root  /data/www/test;
        

        if (!-f $request_filename){
            rewrite ^(.*)$ /index.php$1;
        }
    }

    location ~ \.php($|/) {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
相关文章
相关标签/搜索