Codeigniter маршрутизации выбрасывает 404 страница не найдена ошибка - PullRequest
0 голосов
/ 10 июня 2019

Когда я использую URL как

mysite.com/index.php/user/user метод вызывается.

Но когда я добавляю строку ниже в routes.php, чтобы я мог получить доступ к функции с помощью пользовательского URL. это вызывает у меня ошибку. 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
        }
    }

[2-й вопрос]

как создать маршрут для доступа к контроллеру, присутствующему в определенных папках в каталоге контроллера.

предположим, что файл контроллера находится в каталоге controllers/api/v1/ с именем файла user.php

Примечание: Я перепробовал все решения, предоставленные пользователями в других сообщениях, но проблема не была решена.


РЕДАКТИРОВАТЬ: проблема решена

Маршрутизация сейчас работает нормально. Я думаю, что проблема была, я звонил mysite.com/user, вместо этого я должен был позвонить mysite.com/index.php/user

Вторая проблема с index.php в URL-адресе также решена. Я делал изменения в файле .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 голосов
/ 11 июня 2019

Вы установили свой маршрут как

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

Что указывает на пользовательский контроллер и пользовательский метод. Но в вашем контроллере у вас есть метод с именем user_get.

Итак, самое простое решение - изменить маршрут, чтобы он указывал на правильный метод. ПРИМЕЧАНИЕ. У вас нет метода с именем user, так почему он находится в маршруте?

Так вот ...

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

станет ...

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

Обновление: чтобы удалить index.php из вашего URL, ваш .htaccess может быть

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

И убедитесь, что вы добавили base_url в apps / config / config.php

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