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