nginx里面codeigniter的重写规则

有下面几种方法

一、使用QUERY_STRING,这个最简单了,nginx里面配置少,性能也应该最好

修改codeinniter里面的application/config/config.php文件,改为如下:

$config['uri_protocol'] = 'QUERY_STRING';

nginx里面这样配置一下就行了

if  (!-f $request_filename) {
rewrite (.+) /index.php?$1 last;
}

二、使用PATH_INFO,由于nginx里面默认是不识别PATH_INFO这个php变量的,它会把PATH_INFO作为一个路径,这样就出现了404错误

修改codeinniter里面的application/config/config.php文件,改为如下:

$config['uri_protocol'] = 'PATH_INFO';

nginx里面加两段代码:

location ~ \.php($|/) {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
#下面3行让nginx正确识别文件路径和PATH_INFO
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
}

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

三、使用REQUEST_URI,这个个人觉得没有使用QUERY_STRING来的方便,不利于二次URL重写,毕竟某些时候你想把CodeIgniter默认重写的URL再次重写为比较短点的,这个时候你就必须用CI的config里面enable_query_strings这个地方配置的查询字符串来rewrite了,感觉有点麻烦,如果你不用二次重写,使用这个方法也很简单的。

修改codeinniter里面的application/config/config.php文件,改为如下:

$config['uri_protocol'] = 'REQUEST_URI';

nginx里面这样配置一下就行了

if  (!-f $request_filename) {
rewrite .+ /index.php last;
}

标签: nignx, codeigniter

添加新评论