资讯专栏INFORMATION COLUMN

CodeIgniter在nginx下的配置

MadPecker / 2250人阅读

摘要:今天在把项目放到服务器上的时候,死活路由不到页面,要么是,要么都是页面,很烦。服务器环境位报错误的原因原因是默认不支持这种格式,当你浏览器里输入的时候,会认为你要访问目录下的文件夹里的,所以会报错误。控制器的文件名称不能小写。

今天在把ci项目放到服务器上的时候,死活路由不到页面,要么是404,要么都是welcome页面,很烦。到网上搜到一大堆方法,大多不全面或者不好使,有的干脆就一行代码,我也是看不懂。刚刚弄了好几个小时,总算路由到页面了。这里mark一下。服务器环境

Debian 9.0 64位
nginx 1.13.5
PHP/7.1.10
CodeIgniter 3.1.6
nginx 报404错误的原因

原因是默认Nginx不支持pathinfo这种格式,当你浏览器里输入http:xxx.xxx.comindex.phppageshome的时候,Nginx会认为你要访问index.php目录下的pages文件夹里的home,所以会报404 not found错误。

解决方法

解决方法就是修改nginx.conf文件,下面是我的配置:

        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.php;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ .php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

主要就是加了一行 try_files $uri $uri/ /index.php;具体的原理我也不是很懂,大致就是重定向之类的,懒得走进科学,反正我知道添加这一行,就好用了。
然后修改php支持pathinfo ,找到php的php.ini文件(可能在php安装目录的etc目录也可能在lib文件夹下,看自己的配置),搜索:cgi.fix_pathinfo
将注释放开,并置为1:cgi.fix_pathinfo=1
然后在CI的application 下的config/config.conf文件里修改三个参数:

$config["base_url"] = "http://1.abc.com/";
$config["index_page"] = "";
$config["uri_protocol"]    = "REQUEST_URI";

这三个参数比较关键,其中第一个是web根目录对应的域名 ,index_page要为”,不要为默认值 ‘index.php’.
经过以上设置就ok了,url地址里不需要写index.php了。

然而在我的项目里,nginx路由虽然不报错了,但是ci还是报错404,最后发现是文件名大小写的问题,真的很坑。
控制器的文件名称不能小写。

参考链接

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26007.html

相关文章

  • nginx配置codeigniter

    摘要:最近用搞一个项目,不太熟悉,好不容易配置好了,记录一下。以下为配置配置做如下修改配置之后重启打开搞定 最近用codeigniter搞一个php项目,nginx不太熟悉,好不容易配置好了,记录一下。以下为nginx配置 server { listen 9006; server_name localhost; root /...

    Flands 评论0 收藏0
  • 腾讯云Codeigniter小记

    摘要:前段时间为了抓取网络文本数据,申请了腾讯云学生机,用的框架弄了一段时间。这个用户既是不可登录的操作系统用户,也是数据库用户。设置数据库用户密码为了能够让和数据库相连接,需要设置数据库用户密码。 打读研之后,更加关注算法的学习,Web开发这一块便落下了,平时也通过微信公众号关注了些,常常感慨,技术的更迭真是日新月异。 前段时间为了抓取网络文本数据,申请了腾讯云学生机,用Python的Sc...

    Ocean 评论0 收藏0
  • 腾讯云Codeigniter小记

    摘要:前段时间为了抓取网络文本数据,申请了腾讯云学生机,用的框架弄了一段时间。这个用户既是不可登录的操作系统用户,也是数据库用户。设置数据库用户密码为了能够让和数据库相连接,需要设置数据库用户密码。 打读研之后,更加关注算法的学习,Web开发这一块便落下了,平时也通过微信公众号关注了些,常常感慨,技术的更迭真是日新月异。 前段时间为了抓取网络文本数据,申请了腾讯云学生机,用Python的Sc...

    alphahans 评论0 收藏0
  • Codeigniter 4.0-dev 版源码学习笔记之四——详细路由过程

    摘要:行,判断如果为空,那么返回默认路由。行,把处理完毕后找到的返回。方法该方法是自动按着约定规则去目录去找路由的过程。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 前言 我个人觉得在当前 MVC 流行的架构下,要想去了解一个框架,或者是一个基于此架构下的应用程序,最好的入手方式就是先看路由,虽然路由不是 MVC 里的任何一个,但是知道了路由的来龙去脉就知道了整个框架或者...

    NSFish 评论0 收藏0
  • CodeIgniter连接到微软SQLSERVER2012数据库

    摘要:版本版本版本修改下的修改下的修改下的修改下的,为私有,不能作为表名方法不能刷新主键,否则会报错方法的模型,面向对象的链式写法是,模块为勾选,为勾选域名虚拟主机配置,添加到的最后打开激活在配置对应好版本为文档添加微软的连接插件安装扩 1,PHP PHP版本5.3.3 Apache版本 2.1.5 MSSQL版本 2012 修改database.php下的$db[default][dbd...

    darry 评论0 收藏0

发表评论

0条评论

MadPecker

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<