CodeIgniter在nginx下rewrite配置问题

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

但今天在做表单提交时又出现了问题,问题如下:

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

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

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

所以当我提交表单时总是提示404错误,开始我以为是form表单出了问题,可查阅资料后发现自己的写法并没有问题,而后发现访问上面两个url出现了不同页面,正常情况下两者应该相同,就此我判定应该是url重写或者是ci配置有问题。

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

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

同时要注意

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

nginx配置也要修改

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;
    }
}

你可能感兴趣的:(nginx,CodeIgniter,url,rewrite,index.php)