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 索引控制器路由问题的主要内容,如果未能解决你的问题,请参考以下文章

无法访问codeigniter控制器中的uri段

Codeigniter - CMS 的最佳路由配置?

CodeIgniter 路由文件夹错误

Codeigniter 路由控制器子文件夹

路由不起作用codeigniter

CodeIgniter - 如何路由具有其他名称的控制器?