昨天在服务器上安装了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; } }