Codeigniter路由抛出404页面未找到错误

时间:2019-06-10 09:08:49

标签: php codeigniter routes codeigniter-3

当我使用url作为

mysite.com/index.php/user/user被调用。

但是,当我在routes.php中添加以下行以便可以使用自定义网址访问该函数时。 它使我出错。 404 Not Found

我想使用url作为mysite.com/user

来访问方法

$route['user']['get'] = 'user/user';

user.php位于控制器目录中

    <?php
    use Restserver\Libraries\REST_Controller;
    defined('BASEPATH') OR exit('No direct script access allowed');

    require APPPATH . 'libraries/REST_Controller.php';
    require APPPATH . 'libraries/Format.php';

    class User extends REST_Controller {

        function __construct()
        {
            // Construct the parent class
            parent::__construct();
        }

        public function user_get(){
            $this->set_response("request recieved", REST_Controller::HTTP_OK); // OK (200) being the HTTP response code
        }
    }

[第二个问题]

如何建立访问控制器目录中某些文件夹中控制器的路径。

假设controllers/api/v1/目录中存在一个控制器文件,文件名为user.php

注意: 我已经尝试了其他帖子上用户提供的所有解决方案,但问题尚未解决。


编辑:已发布的问题

路由现在可以正常工作了。我认为问题是,我打电话给mysite.com/user,我应该打电话给mysite.com/index.php/user

位于URL中的index.php的第二个问题也已解决。 我正在.htaccess文件夹中的Application文件中进行更改。 我在.htaccess中创建了一个root folder文件,然后在下面提到的代码行中添加了

<IfModule mod_rewrite.c>
    RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

1 个答案:

答案 0 :(得分:0)

您已将路线设置为

$route['user']['get'] = 'user/user';

这将定向到用户控制器和用户方法。但是在您的控制器中,您有一个名为user_get的方法。

因此,这里最简单的解决方法是更改​​您的路线以指向正确的方法。 注意:您没有称为“用户”的方法,为什么在路由中使用该方法?

所以这个...

$route['user']['get'] = 'user/user'; // the user method does not exist

将成为...

$route['user']['get'] = 'user/user_get'; // the user_get method does exist

更新:要从您的URL中删除index.php,您的.htaccess文件可能是

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

并确保您在 applications / config / config.php

中添加base_url
$config['base_url'] = 'http://example.com';  // Change to your sites URL
$config['index_page'] = '';  // remove index.php