调用方法时出现 404 Codeigniter 页面错误

404 Codeigniter page error when calling method

我的代码点火器有问题,我有以下代码 (user_stats.php):

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class User_stats extends MX_Controller
{
    function __construct() {
        parent::__construct();
    }
    function user_stats() {
        echo "Hello";
    }
    function detect_location() {
        echo "World";
    }   
}

如果我通过 url 调用方法,例如http://test/user_stats/detect_location I get the output World, but when I load up http://test/user_stats/user_stats I get an error 404 page. I checked the logs and for some reason the the request was for http://test/user_stats/index (when trying to load http://test/user_stats/user_stats)。我的 htaccess 文件包含以下代码:

RewriteEngine on
RewriteCond  !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L,QSA]

配置文件配置为:

$config['index_page'] = '';

$config['uri_protocol'] = 'AUTO';

$config['url_suffix'] = '';

如能帮助解决此问题,我们将不胜感激。

谢谢

基本上你的 Class 名称是 User_stats 和函数名称是 user_stats 一样。具有相同 class 名称的函数名称被视为构造函数。如果你删除你的 function __construct() 并点击这个 url http://test/user_stats/detect_location 你将得到输出

Hello World 

这种情况 user_stats 是您的构造函数。
其实你有两个构造函数,如果你保持function __construct()function user_stats就没用了。对于具有相同参数的 class 不能有两个构造函数。

将函数名user_stats()更改为index()并打开config/routes.php文件 并在其中添加这一行:

$route['user_stats/user_stats'] = "user_stats/index";

注意:正如@oldlearner 所说,该函数就像一个构造函数,在 php5 中已弃用。