调用方法时404 Codeigniter页面错误

时间:2015-01-19 13:32:15

标签: .htaccess codeigniter http-status-code-404 config

我遇到代码点火器问题,我有以下代码(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";
    }   
}

如果我通过网址调用该方法,例如http://test/user_stats/detect_location我得到输出World,但是当我加载http://test/user_stats/user_stats时,我收到错误404页面。我检查了日志,由于某种原因,请求是http://test/user_stats/index(尝试加载http://test/user_stats/user_stats时)。我的htaccess文件包含以下代码:

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

并将配置文件配置为:

$config['index_page'] = '';

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

$config['url_suffix'] = '';

任何有助于解决此问题的帮助都将受到赞赏。

由于

2 个答案:

答案 0 :(得分:2)

基本上,您的班级名称为User_stats,且函数名称为user_stats。具有相同类名的函数名称将被视为构造函数。如果您移除function __construct()并点击此网址http://test/user_stats/detect_location,您将获得输出

Hello World 

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

答案 1 :(得分:0)

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

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

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