单控制器错误404的代码点火器


Codeigniter with single controller error 404

我是CodeIgniter的新手,根据标题,我在为应用程序设置单个控制器时遇到了问题。这是一个非常简单的静态网站,有几个页面,比如"主页"、"关于"等等…

我的routes.php文件中有这个:

$route['default_controller'] = "mycontroller";
$route['404_override'] = '';
$route['(:any)'] = "mycontroller/$1";

这个在mycontroller.php文件中:

// Home
public function index()
{
    $data['page'] = 'home';
    $this->load->view('template',$data);
}
// about
public function about()
{
    $data['page']  = 'about';
    $data['title'] = 'About Us';
    $this->load->view('template',$data);
}

我在localhost环境中工作,CI项目位于以下文件夹中:

http://localhost/local/project/ci-tbs/

并且我已经在config.php文件中为base_url参数指定了它。

现在,我希望将浏览器指向

http://localhost/local/project/ci-tbs/about

是找到"关于我们"页面,但我得到了一个404错误。准确地指向基本地址会给我一个"主页"。

我做错了什么?

是否感觉到使用每页1个的单个控制器istead?我完全会用一种快速的方法来解决这个问题,但我仍然很困惑,因为我不明白自己做错了什么,也不明白为什么不起作用。我想在一个控制器中简单地设置所有内容,每页一个方法。

我已经在SO中看到过这个主题,比如在路由$route['(.*)'] = "mycontroller/$1";中使用正则表达式,但没有什么真正适用于我的情况,我认为这是非常基本的(非常基本,我相信我的错误非常严重,会非常尴尬:p)。

附加信息:

我在文件夹中有一个.htaccess文件,按原样从Html5 Boilerplate中选择了,尝试了使用和不使用它,但404始终存在。我使用XAMPP作为本地环境。


回答

正如@Vincent Decaux在回答中提到的,解决这个问题的方法是在url中添加index.php,另一个有趣的部分是

创建.htaccess文件以"隐藏"index.php

通过这种方式,我解决了资产文件中缺少结果的页面的另一个小问题,因此我在.htaccess文件中使用了以下规则,将所有请求重定向到index.php文件,并排除资产文件夹和图像中的文件,以及robots.txthttps://stackoverflow.com/a/11846150/1262357

RewriteEngine on
RewriteCond $1 !^(index'.php|assets|images|robots'.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

希望这能帮助其他和我有同样问题的人!

正如我的评论中所提到的,它似乎可以使用:

localhost/local/project/ci-tbs/index.php/about 

创建.htaccess文件以"隐藏"index.php.