用户
 找回密码
 入住 CI 中国社区
搜索
12
返回列表 发新帖
楼主: bogy
收起左侧

[已解决] 很奇怪的url解析问题

[复制链接]
 楼主| 发表于 2011-8-16 13:34:16 | 显示全部楼层
Hex 发表于 2011-8-16 13:29
程序看起来没什么问题。
你有写路由规则吗?你的默认控制器是哪个?

routes.php里面只留了两条:
$route['default_controller'] = "login";
$route['scaffolding_trigger'] = "";


其他的没做任何修改。
最诡异的有两点:
1.本地机win+appache一切正常。
2.同一台服务器用CI 1.7.3,使用相同的配置和controllers,一切正常。(构造函数继承已经替换)。
发表于 2011-8-16 13:38:34 | 显示全部楼层
你把 login 当作默认控制器啦?我觉得这样做不太好,虽然和这个问题无关。

这个看起来就是 PATH_INFO 的问题,CI 找不到 PATH_INFO,就认为 PATH_INFO 为空,然后就自动转到默认控制器。

你改下 config.php 里的 $config['uri_protocol'];
改成 PATH_INFO,应该能解决问题。如果不行再试试其他值。
 楼主| 发表于 2011-8-16 13:45:48 | 显示全部楼层
Hex 发表于 2011-8-16 13:38
你把 login 当作默认控制器啦?我觉得这样做不太好,虽然和这个问题无关。

这个看起来就是 PATH_INFO 的问 ...

好的我去试试看。
本来用老版本已经能用了。但是有个莫名的问题总是烦躁的。
login这个好办,运行起来之后优化一下名字。
 楼主| 发表于 2011-8-16 14:11:36 | 显示全部楼层
Hex 发表于 2011-8-16 13:38
你把 login 当作默认控制器啦?我觉得这样做不太好,虽然和这个问题无关。

这个看起来就是 PATH_INFO 的问 ...

汇报一下最新进展:
protocal试验到最后一个值ORIG_PATH_INFO的时候终于可用了。
但是感觉相应速度似乎明显慢了不少,也许是错觉?

多谢hex老大。
不过还是没明白AUTO怎么就不行。。HEX可否给总结或者点评一下?
发表于 2011-8-16 14:43:40 | 显示全部楼层
bogy 发表于 2011-8-16 14:11
汇报一下最新进展:
protocal试验到最后一个值ORIG_PATH_INFO的时候终于可用了。
但是感觉相应速度似乎明 ...

这个就和 apache 的编译或者配置有关,说白了就是 apache 提供的是 ORIG_PATH_INFO 而没有提供 PATH_INFO。
而 AUTO 还没有达到这么智能,所以没有取 ORIG,而是还是取的 PATH_INFO,就造成错误了。

具体你可以看下 CI 这部分的源码,在 Router.php 中。
 楼主| 发表于 2011-8-16 15:11:33 | 显示全部楼层
Hex 发表于 2011-8-16 14:43
这个就和 apache 的编译或者配置有关,说白了就是 apache 提供的是 ORIG_PATH_INFO 而没有提供 PATH_INFO ...

好,我抽个时间慢慢仔细读一下。
不过这说明2.0的解析算法和1.7发生变化了。

另外想请hex评价一下这个帖子:http://www.360doc.com/content/11/0320/21/6524307_102997671.shtml
作者分析了CI加载流程和结构,说控制器部分写的很烂。
发表于 2011-8-16 16:53:24 | 显示全部楼层
bogy 发表于 2011-8-16 15:11
好,我抽个时间慢慢仔细读一下。
不过这说明2.0的解析算法和1.7发生变化了。

这个之前是廖老大写的吧。。。都好几年前的文章了。

首先,这个是 CI 很老版本的文章。另外,这个文章的作者是另一个框架的作者,其中或多或少存在不客观的情况。

再有,CI 也不是完美的,我们要取其精华去其糟泊。

本版积分规则