当我遇到障碍时,我正在阅读官方的Code Igniter教程......
tutorial让我保存并运行此代码:
<?php
class Blog extends Controller {
function index()
{
echo 'Hello World!';
}
function comments()
{
echo 'Look at this!';
}
}
?>
如果我输入以下网址:
index.php/blog
它可以工作并显示“Hello World!”。
当我修改URL以显示注释时如下:
index.php/blog/comments/
我得到了404。
答案 0 :(得分:2)
如果添加?在index.php之后它有效吗?
http://example.com/index.php?/blog/comments
答案 1 :(得分:2)
我发现这篇旧帖子时没有得到很好的答案,为什么会发生这种情况。我也遇到了你所做的同样明显的错误,并且正在努力修复它。我意识到问题来自早期CI示例中设置的路由。除非我在config / routes.php中添加以下行,否则我的页面根本无法正常工作:
$['blog'] = 'blog';
这是因为这条线除了你已经设置的东西之外还考虑任何东西作为根的参数:
$route['(:any)'] = 'pages/view/$1';
如果删除上面的行,它将全部工作,除了root将不再像以前的教程那样工作。我还必须添加以下行,以便我们可以调用控制器内的函数:
$route['blog/(:any)'] = 'blog/$1';
添加了这两个,你可以在root上调用函数,但也有一个工作的“博客”控制器。
答案 2 :(得分:1)
默认情况下,您的示例应该有效。检查您的配置并删除.htaccess,因为您的示例未使用mod_rewrite。
从头开始也有助于你学习;)
答案 3 :(得分:1)
总是值得在application / config / config.php中尝试一些$ config ['uri_protocol']选项。
/*
|--------------------------------------------------------------------------
| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string. The default setting of "AUTO" works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';
某些服务器存在不同选项的问题,因此请手动尝试。这可能对您的情况不起作用,但过去为我节省了一天。
答案 4 :(得分:0)
我是文件更新问题。
答案 5 :(得分:0)
我遇到了同样的问题。结果是我从未关闭过我的第一个功能 - 我离开了最后一个}。所以我没有关闭的功能工作得很好,但之后的一切都给了我404.
答案 6 :(得分:0)
在某些版本的CodeIgniter中,您的控制器名称(文件名)必须以大写字母
开头例如..
Unknown option: C:\...\babelrc.presets
如果文件的第一个字母不是大写,那么它可能会显示404错误。