问题描述
我在路由配置中的 default_controller 设置为home.php".
My default_controller in the routes configuration is set as "home.php".
我的控制器有一个子目录,我们称之为文件夹".因此,如果我访问 http://mysite.com/folder/,默认控制器folder/home.php"应该叫对吧?
I have a sub directory for my controllers, lets call it "folder". So if I visit http://mysite.com/folder/, the default controller "folder/home.php" should be called right?
但是由于某种原因这不起作用,我收到了 404.访问 http://mysite.com/文件夹/主页 或 http://mysite.com/folder/home/index按预期工作.除此之外,默认控制器在根目录中工作(http://mysite.com 加载 home.php).
However for some reason this doesn't work, I get a 404. Visiting http://mysite.com/folder/home or http://mysite.com/folder/home/index works as expected. In addition to this, the default controller works in the root directory (http://mysite.com loads home.php).
任何想法,有没有其他人经历过这个?我无法理解它 - 这似乎是一个 CI 问题,但我找不到其他人有同样的问题.
Any ideas, has anyone else experienced this? I can't get my head around it - it would appear to be a CI issue but I can't find anybody else having the same problem.
至少从我理解的方式来看,文档表明这应该可以正常工作:http://codeigniter.com/user_guide/general/controllers.html#subfolders
The documentation, from the way I understand it at least, suggests that this should work fine: http://codeigniter.com/user_guide/general/controllers.html#subfolders
将默认控制器设置为folder/home.php"意味着http://mysite.com/folder/ 按预期工作正常.除了我希望默认控制器只是home.php" - 无论是在根目录中还是在子目录中,都应该加载该目录中的 home.php,如文档所建议的那样.
Setting the default controller to "folder/home.php" means that http://mysite.com/folder/ works fine as expected. Except for I want the default controller to just be "home.php" - whether in the root or in a sub directory, home.php within that directory should be loaded, as the documentation suggests.
干杯
推荐答案
对于控制器文件夹中的每个子文件夹,您必须在 routes.php
中指定一个默认控制器.内置的 $route['default_controller']
不适用于子文件夹.
For each sub-folder in your controllers folder you must specify a default controller in routes.php
. The built in $route['default_controller']
will not work for sub-folders.
例如:要为您设置默认控制器 folder
子文件夹到 home
将以下内容添加到您的 /application/config/routes.php代码>文件:
e.g: For setting the default controller for you folder
sub-folder to home
add the following to your /application/config/routes.php
file:
$route['folder'] = "folder/home";
这意味着 http://mysite.com/folder/
与 http://mysite.com/folder/home
作为 URL 相同.
which means http://mysite.com/folder/
is the same as http://mysite.com/folder/home
as URL.
这篇关于子目录中的 CodeIgniter 默认控制器不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!