我是CodeIgniter的新手,按照标题,我在为我的应用程序设置单个控制器时遇到了麻烦。这是一个非常简单的静态网站,有几个页面,如“home”,“about”等等......
我在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错误。指向基地址corectly给我“主页”页面。
我做错了什么?
是否感觉使用单个控制器而不是每页1个?我完全以快速的方式解决这个问题,但我仍然感到困惑的是,我无法理解我做错了什么以及为什么它不能正常工作。我想简单地在一个控制器中设置所有内容,每页一个方法。
我已经在SO中看到了这个主题,就像在路由$route['(.*)'] = "mycontroller/$1";
中使用正则表达式一样,但是对于我的情况没有什么真正起作用我认为是非常基本的(基本的我确定我的错误)是如此严重以至于令人尴尬:P)。
其他信息:
我在文件夹中有一个.htaccess文件从Html5 Boilerplate中选择了 ,尝试使用和不使用它但404总是在那里。我正在使用XAMPP作为本地环境。
正如@Vincent Decaux在答案中所提到的,修复此问题的协议是在网址中添加index.php,其他有趣的部分是
创建.htaccess文件以“隐藏”index.php
这样我就解决了资产文件缺失发现的页面的另一个小问题,所以我在.htaccess文件中使用了以下规则,将所有请求重定向到index.php文件并排除assets文件夹中的文件和图像,以及此处建议的robots.txt https://stackoverflow.com/a/11846150/1262357
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
希望这有助于其他人遇到同样的问题!
答案 0 :(得分:4)
正如我的评论所述,它似乎可以使用:
localhost/local/project/ci-tbs/index.php/about
创建.htaccess文件以“隐藏”index.php。