我对Codeigniter并不陌生,但到目前为止一直在做一些开始的项目。现在我自己开始一个新的小项目,我有点迷路了。
我下载了codeigniter,在wamp中配置了所有参数,所以我有了这个基础URL: http://local.project
现在我正在尝试建立一个小管理员。我应该能够通过http://local.project/admin进入这个管理员应该显示一个登录页面。我已经有一个模板了。
事情是同样的404错误出现。我的配置是这样的:
在配置文件夹中,routes.php:
$route['default_controller'] = "admin";
$route['404_override'] = '';
$route['admin'] = 'admin';
然后在controllers文件夹中,创建了另一个名为admin.php的文件夹admin,其中包含:
<?php
class Admin extends CI_Controller {
public function index()
{
echo 'Hello World!';
}
}
?>
现在,试图从浏览器访问我已经尝试了许多可能的url,但我仍然不确定它应该如何>
http://local.project/admin和其他组合,如
http://local.project/admin/index.phphttp://local.project/indexhttp://local.project/index/admin
但总是出现404页面未找到错误。
所以我真的很想知道,我做错了什么?
编辑
这是。htaccess包含的内容>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
您完全有理由认为,通过定义默认控制器,它应该在子文件夹中工作,但ellislabs不同意。根据用户指南:
$route['default_controller'] = 'welcome';
这条路由指示,如果URI中不包含任何数据,当人们加载您的根URL。在上面的例子中,"welcome"类将被加载。建议您始终使用默认路由,否则会出现404页面默认显示
如果URI不包含数据,则关键字为"/admin"包含数据。如果你把你的Admin控制器放到根控制器文件夹中然后输入"local.project/"你会得到Admin控制器的索引函数,但在子文件夹中,你必须指定完整路径,在本例中是"/Admin/Admin/index."把它放到你的"管理"中路由将解决这个问题,然后添加另一个路由来处理任何其他功能($route["admin/(:any)'] = 'admin/admin/$1'
应该做的技巧)将解决其余的问题。
就像你知道的,如果你把这段代码上传到运行Linux的服务器上,它会崩溃,因为"Admin"answers";admin"就Linux/Unix而言,是两种不同的控制器。作为一个长期的Windows开发者,我能感受到你的痛苦。