lnmp 下codeigniter的配置

已解决

对于/index.php/abc这种url,Apache和Lighttpd会按”index.php?abc”来解释,而nginx会认为是请求名
 
字是“index.php”的目录下的abc文件的内容。所以CI在nginx下不配置rewrite是无法运行的,而在Apache
 
和Lighttpd则正常。
Nginx里rewrite ^/(.*)$ /index.php?$1 last;来rewrite请求时,对于:/abc.abc这类请求,会
 
rewrite成“index.php/abc_abc”,即会把“点”变成“下划线”,不清楚是为什么。
 
Nginx配置文件里的rewrite规则不是只执行一次就完事的,是“执行一遍,假如没有碰到break,就按
 
rewrite后的新路径再执行一遍,直到不再变化或者遇到break或者执行满10次报500错误退出”,所以单纯    
 
的用小知识二里的重写规则是不行的,需要在后面加上一句break,这样重写一遍后就不再执行了。
 其中fireboxbug指的是codeignite所在的子目录。
location /firefoxbug/                
{
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /firefoxbug/index.php?$1 last;
break;
}
}
















分割线---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

简单记录一下ci伪静态

首先需要设置nginx 开启 path_info (这一点我纠结了好久,按照网上方法设置都不正确,最终发觉lnmp默认已经开启path_info)

伪静态规则:

if ($request_uri ~* ^/system)
{
 rewrite ^/(.*)$ /index.php?/$1 last;
 break;
}

if (!-e $request_filename)
{
 rewrite ^/(.*)$ /index.php?/$1 last;
 break;
}

资料:codeigniter-nginx-rewrite-rules
nginx rewrite 伪静态配置参数详细说明(转)




最近将一个CI框架的项目部署到Nginx服务器上时,连接到控制器的页面全部出现404错误。查询资料后发现,CI框架主要应用与apache服务器,CI框架需要path_info的支持,Nginx服务器需要经过配置才能实现path_info。
从网上搜索后找到如下配置,测试正常。

找到对应配置文件,修改为:
server
{

listen 80;
server_name localhost;
index index.php;
root /home/wwwroot; #修改为项目对应的根目录

location ~ .*.php($|/)
{
root /home/wwwroot; #修改为项目对应的根目录
fastcgi_param SCRIPT_FILENAME /home/wwwroot$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
}

此外还要找到php.ini(/usr/local/php/etc/php.ini)的配置文件(若不修改,会出现No input file specified问题)
搜索关键词:cgi.fix_pathinfo
将此设置为1:
cgi.fix_pathinfo=1

最后重启Nginx即可。
此外若目录中出现”.”,也可能遇到404问题。(没遇到过,网上搜资料的时候找到的)

参考的网站如下:

http://cc.ecjtu.net/posts/ci-nginx-404

http://down.chinaz.com/server/201111/1358_1.htm

http://codeigniter.org.cn/forums/thread-1465-1-1.html

http://wesoho.blog.51cto.com/715082/200689

感谢大家的分享。



虚拟机测试nginx 遭遇 No input file specified,多方查找终于找到解决办法
 
1、 php.ini(/etc/php5/cgi/php.ini)的配置中这两项
cgi.fix_pathinfo=1  (这个是自己添加的)



你可能感兴趣的:(框架,nginx,服务器,input,Path)