Codeigniter 索引控制器路由问题
Posted
技术标签:
【中文标题】Codeigniter 索引控制器路由问题【英文标题】:Codeigniter Index Controller routing problem 【发布时间】:2011-05-09 13:32:02 【问题描述】:我在/system/application/controller/目录下有一个索引控制器名称Index.php
我已经设置了 .htacesss 的规则
重写引擎开启 RewriteCond $1 !^(include||index.php|images|robots.txt) 重写规则 ^(.*)$ /index.php/$1 [L]
然后我转 $route['default_controller'] = "index";
我配置 $config['index_page'] = "";
我的控制器中有一个索引操作
当我访问http://domain/index/index/en 时将有 404
当我访问http://domain/index/index/index/en 就可以了
我尝试在 Libraries/Router.php 中回显 $this->uri->segments
发现如果我用 index/index/en 请求,它只返回 index 和 en
如果我请求 index/index/index/en 它返回 index、index 和 en,
作为 ci 路由逻辑,第一段是控制器名称,第二段是动作
能解决吗???只是不想主页中的网址太长
【问题讨论】:
如果你访问一个不名为“index”的控制器会发生什么? 很好,但我不想改变而不是索引客户端不喜欢 home 或 main,它必须是索引 【参考方案1】:documentation 实际上表明控制器不能命名为“索引”,因为它是一个保留字。
如果您的目标是获得漂亮的 URL,您应该将默认控制器保持原样,并将 $config["index_page"] 变量留空。
然后创建这个 .htaccess 文件:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ /index.php/$1 [L,QSA]
那会让 CI 和你成为幸福的一对……
【讨论】:
非常感谢,只是文档“不要命名您的控制器功能中的任何一个:例如索引”中的一个小问题,但我只用索引命名控制器,为什么没有任何问题控制器有一个叫做 index 的函数? 我认为这是文档解释的问题;这不是您的控制器功能,您不能命名为“索引”。只是控制器类名。阅读codeigniter.com/user_guide/general/controllers.html的控制器功能文档时应该清楚其原因以上是关于Codeigniter 索引控制器路由问题的主要内容,如果未能解决你的问题,请参考以下文章