昨晚搞得很郁闷,好好的项目,放到客户的服务器居然404,发现应该是服务器不支持pathinfo方式,但至今也没有找到确切的原因(毕竟也用的apache,怎会不支持pathinfo?.htaccess里面配置AcceptPathInfo也不行
),在网上也找了,居然也有人重写的,不过他重写的是Config类,而且还重写了其他几个类,汗。。,搞不懂,ci支持helper的优先级的嘛,方便就一个函数搞定。。【后来发现,form_validation.php配置文件,他也是要通过URI获取来的rsegment来判断uri合法性,所以没办法,使用这个后,验证表单时要加上配置文件所指定的验证规则:如$this->form_validation->run('login/do_login')】
自己application下的common_helper.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /** * zcs=重写ci的site_url * [开启do_enable_query_strings配置] * 支持原本的index.php/xx/xx/p1/v1/p2/v2方式转换为index.php?c=xx&m=xx&p1=v1&p2=v2 * @param $uri * @return unknown_type */ function site_url( $uri = '' ){ $CI =& get_instance(); if ( is_array ( $uri ) || $uri == '' || ! $CI ->config->item( 'do_enable_query_strings' )){ return $CI ->config->site_url( $uri ); } else { //zcs=>解析PATHINFO方式为正常方式,ci用uri传递函数参数的方式则不可取了 $uri = trim( $uri , '/' ); $uri_arr = explode ( '/' , $uri ); $param_len = count ( $uri_arr ); $c = '?' . $CI ->config->item( 'controller_trigger' ). '=' . $uri_arr [0]; $m = (( $param_len >= 2) ? '&' . $CI ->config->item( 'function_trigger' ). '=' . $uri_arr [1] : '' ); $uri = $c . $m ; for ( $i = 2; $i < $param_len ; $i ++){ $uri .= (( $i %2) ? '=' : '&' ); $uri .= $uri_arr [ $i ]; } return $CI ->config->slash_item( 'base_url' ). $CI ->config->item( 'index_page' ).trim( $uri , '/' ); } } |
另外用到了我自己的一个配置项,方便配置这种特有的方式,避免冲突:
[config.php]
1 2 3 4 5 6 7 8 9 | /* |-------------------------------------------------------------------------- | 将所有site_url中使用的index.php/xx/xx/p1/v1/p2/v2方式转换为?c=xx&m=xx&p1=v1&p2=v2 |-------------------------------------------------------------------------- |1、此配置依赖于common_helper.php中重写的site_url函数 |2、转换后需要配置enable_query_strings开启,否则ci不允许 | */ $config [ 'do_enable_query_strings' ] = TRUE; |
然后可以方便地转换了,不过ci的uri传函数参数方式就不行了,个人觉得也最好不要使用这种方式,直接还是用原始的GET传参吧,毕竟这种有局限
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用