7

当我遇到障碍时,我正在阅读官方的 Code Igniter 教程......

教程让我保存并运行此代码:

<?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。

4

7 回答 7

2

如果你添加一个?在 index.php 之后它起作用了吗?

http://example.com/index.php?/blog/comments
于 2009-11-04T07:30:03.287 回答
2

我遇到了这篇旧帖子,但没有很好地回答它为什么会发生。我也遇到了与您相同的明显错误,并且正在努力修复它。我意识到问题出在早期 CI 示例中设置的路由。除非我在 config/routes.php 中添加以下行,否则我的页面根本无法工作:

$['blog'] = 'blog';

这是因为这一行将除您已经设置的内容之外的任何内容都视为根的参数:

$route['(:any)'] = 'pages/view/$1';

如果您删除上面的行,它会工作,除了根将不再像以前的教程中那样工作。我还必须添加以下行,以便我们可以调用控制器内部的函数:

$route['blog/(:any)'] = 'blog/$1';

添加这两个后,您可以在根上调用函数,还可以拥有一个工作的“博客”控制器。

于 2012-11-27T23:11:48.447 回答
1

默认情况下,您的示例应该可以工作。检查您的配置并删除 .htaccess,因为您的示例未使用 mod_rewrite。

从头开始也可以帮助您学习;)

于 2009-11-03T05:05:41.720 回答
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';

某些服务器存在不同选项的问题,因此请手动尝试每个选项。这可能不适用于您的情况,但过去为我节省了一天。

于 2009-12-21T11:30:58.713 回答
0

我是文件更新问题。

于 2009-11-04T03:29:21.517 回答
0

我有同样的问题。结果是我从来没有关闭过我的第一个函数——我离开了最后一个}。所以我没有关闭的功能运行良好,但之后的一切都给我一个 404。

于 2009-11-29T01:32:14.920 回答
0

在某些版本的 CodeIgniter 中,您的控制器名称(文件名)必须以大写字母开头

例如..

 Blog.php 

如果文件的第一个字母不是大写,那么它可能会显示 404 错误。

于 2016-04-25T19:56:11.423 回答