Маршруты CodeIgniter: я продолжаю получать 404

У меня есть файл application/controller/login.php, содержащий следующее

class Login extends Controller {

  function Login()
  {
    parent::Controller();  
  }

  function index()
  {
    $this->mysmarty->assign('title', 'Login');
    $this->mysmarty->assign('site_media', $this->config->item('site_media'));
    $this->mysmarty->display('smarty.tpl');
  }
}

Мое определение маршрутов выглядит следующим образом:

$route['default_controller'] = "welcome";
$route['login'] = 'login';
$route['scaffolding_trigger'] = "";

Проблема в том, что я продолжаю получать 404, когда пытаюсь получить доступ к http://localhost/myapp/login. Что я сделал не так? Я проверил документы маршрутов CI и ничего не обнаружил.


person Lorenzo    schedule 03.04.2009    source источник
comment
Сначала вам нужно сообщить нам, какую версию CI вы использовали? Поскольку версия CI (3.x), имя класса контроллера и имя файла должны быть написаны заглавными буквами, поэтому может возникнуть проблема с заглавными буквами, но если ваша версия CI 3.x.   -  person Jinesh Gandhi    schedule 22.03.2017


Ответы (3)


Ничего страшного в этом быть не должно - без маршрута работает? Кроме того, правильно ли вы установили .htaccess (т.е. http://localhost/myapp/index.php/login работать вместо этого)

person v3.    schedule 03.04.2009
comment
Спасибо v3, что сделал это. Но почему для default_controller не нужен index.php? - person Lorenzo; 04.04.2009
comment
По умолчанию, если вы переходите к папке на веб-сервере, Apache ищет index.html, index.php, main.php и т. д. Итак, localhost/myapp эквивалентен localhost/myapp/index.php. - person v3.; 04.04.2009

Еще один момент, о котором следует помнить, если для параметра enable_query_strings установлено значение true и вы не используете правила .htaccess mod_rewrite:

В config/config.php:

$config['enable_query_strings'] = TRUE;
$config['controller_trigger']   = 'c';
$config['function_trigger']     = 'm';
$config['directory_trigger']    = 'd';

URL-адрес для правильной маршрутизации вашего запроса будет выглядеть так:

http://localhost/myapp/index.php?c=login
person Community    schedule 01.05.2009

Если вы не удалили index.php из своего приложения с помощью файла .htaccess, это еще одна игра в мяч сама по себе. Но что вы можете сделать, так это:

Установите файл controller по умолчанию, который не является файлом welcome, и если вы хотите, чтобы файл приветствия был вашим файлом по умолчанию, используйте ссылку таким образом.

http://localhost/myapp/index.php/login

Помните, что этот способ работает только тогда, когда файл index.php не был удален с помощью файла .htaccess.

Также откройте apllication/config/config.php и используйте этот код для baseurl

$config['base_url'] = 'http://localhost/myapp';

Это всегда должно срабатывать.

person Fillz Adebayo    schedule 04.04.2017