用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1312|回复: 7
收起左侧

[HELP] CodeIgniter 路由问题

[复制链接]
发表于 2016-6-28 16:36:58 | 显示全部楼层 |阅读模式
我使用CI 3.0.6 版本,访问地址是http://myspringexample.com/pages/view/home.php
我本地修改了hosts文件,把myspringexample.com指向本地ip
并且项目中config/routes.php 没有对以上url进行路由配置
项目中写好了对应的controller以及方法
但是访问的时候走的还是默认的controller.
我跟踪了一下,发现是system/core/URI.php 文件中函数_parse_request_uri的问题,这个函数中如下代码的问题,我把它注释掉就可以了。这行代码作用是什么,这是不是bug
if (isset($_SERVER['SCRIPT_NAME'][0]))
{
   if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0)
   {
      $uri = (string) substr($uri, strlen($_SERVER['SCRIPT_NAME']));
   }
   elseif (strpos($uri, dirname($_SERVER['SCRIPT_NAME'])) === 0)
   {
      $uri = (string) substr($uri, strlen(dirname($_SERVER['SCRIPT_NAME'])));
   }
}
发表于 2016-6-29 10:48:34 | 显示全部楼层
http://myspringexample.com/pages/view/home.php 这样的访问地址是错误的,在 CI 里不能直接访问 .php 文件。
发表于 2016-6-28 17:03:27 | 显示全部楼层
你指向本地,base_url 咋配的
.htaccess 这个配了吗
 楼主| 发表于 2016-6-28 20:34:37 | 显示全部楼层
本帖最后由 wangqichun 于 2016-6-28 20:36 编辑
梦想杀死 发表于 2016-6-28 17:03
你指向本地,base_url 咋配的
.htaccess 这个配了吗

$config['base_url'] = 'http://myspringexample.com/';
.htaccess 配置如下:
<IfModule authz_core_module>
    Require all denied
</IfModule>
<IfModule !authz_core_module>
    Deny from all
</IfModule>
发表于 2016-6-29 11:41:25 | 显示全部楼层
Hex 发表于 2016-6-29 10:48
http://myspringexample.com/pages/view/home.php 这样的访问地址是错误的,在 CI 里不能直接访问 .php 文 ...

这不是那谁么
 楼主| 发表于 2016-6-29 11:56:39 | 显示全部楼层
Hex 发表于 2016-6-29 10:48
http://myspringexample.com/pages/view/home.php 这样的访问地址是错误的,在 CI 里不能直接访问 .php 文 ...

那为什么,我修改框架里的代码就可以了,修改如下:
system/core/URI.php 文件中代码
if (isset($_SERVER['SCRIPT_NAME'][0]))
{
   if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0)
   {
      $uri = (string) substr($uri, strlen($_SERVER['SCRIPT_NAME']));
   }
   elseif (strpos($uri, dirname($_SERVER['SCRIPT_NAME'])) === 0)
   {
      $uri = (string) substr($uri, strlen(dirname($_SERVER['SCRIPT_NAME'])));
   }
}
全部注释掉,就可以正常访问了,没有任何的问题。
我估计就是路由规则的问题,但是不知道是我哪里配置的问题,导致和框架里的代码冲突吧。
发表于 2016-6-29 14:05:32 | 显示全部楼层

那谁?
发表于 2016-6-29 14:06:29 | 显示全部楼层
wangqichun 发表于 2016-6-29 11:56
那为什么,我修改框架里的代码就可以了,修改如下:
system/core/URI.php 文件中代码
if (isset($_SERVER ...

你对 CI 的用法就是错误的,所以你需要修改 CI 源码才能实现你的需求。
正确的使用 CI 就不需要你去修改源代码了。

本版积分规则