Загрузить новую страницу с маршрутом CI

Я новичок в CodeIgniter, и его маршрутизация меня смущает, я пытаюсь просто загрузить другую страницу (у меня есть отдельные контроллеры и представления для каждой страницы).

У меня есть следующий код:

<li class="active"><a href="/homepage">Home</a></li>

Мои маршруты.php:

$route['default_controller'] = "homepage";
$route['404_override'] = '';
$route['homepage'] = "homepage";

Собираюсь

http://demo

загружает домашнюю страницу (у меня есть виртуальные хосты, настроенные в Apache), но нажатие на ссылку «Главная» дает мне

Запрошенный URL/домашняя страница не найден на этом сервере.


person SteB    schedule 17.02.2013    source источник
comment
Почему вы определяете два маршрута с одним и тем же контроллером? Просто дайте вашему $route['homepage'] другой контроллер/метод   -  person Ryan    schedule 18.02.2013
comment
Почему вы изменили default_controller? И вы создали контроллер по умолчанию? И если вы это сделали, последний маршрут лишний.   -  person Repox    schedule 18.02.2013
comment
@rpm - я хочу, чтобы домашняя страница появлялась всякий раз, когда вводится только имя домена и когда нажимается ссылка на домашнюю страницу. если я назначу маршрут домашней страницы другим контроллером, не будет ли у меня просто 2 одинаковых контроллера?   -  person SteB    schedule 18.02.2013
comment
@repox = Я изменил контроллер по умолчанию, чтобы домашняя страница отображалась при переходе на домен, разве мне не нужно указывать, какую страницу загружать при нажатии на ссылку на домашнюю страницу?   -  person SteB    schedule 18.02.2013
comment
@SteB Контроллер по умолчанию только сообщает приложению, какой контроллер следует использовать, когда сегменты URI не указывают ни на какой другой контроллер. Если вы измените контроллер по умолчанию на homepage, ваш файл контроллера по умолчанию должен быть назван так. Когда пользователи посещают ваш веб-сайт, перейдя на www.example.com и www.example.com/homepage, они отобразят один и тот же файл контроллера.   -  person Repox    schedule 18.02.2013
comment
@repox - это то, к чему я стремлюсь, но при вводе www.example.com/homepage появляется запрошенный URL-адрес / домашняя страница не найдена.   -  person SteB    schedule 18.02.2013
comment
А если ввести example.com/index.php/homepage?   -  person Repox    schedule 18.02.2013
comment
@repox - Да, это работает! Теперь я действительно запутался, разве index не является методом по умолчанию для контроллера?   -  person SteB    schedule 18.02.2013
comment
@SteB Да, это так. Но файл index.php — это файл начальной загрузки, через который проходят все запросы. Подробности см. в руководстве.   -  person Repox    schedule 18.02.2013
comment
как насчет site_url('homepage') или site_url('') на вашем href=''   -  person tomexsans    schedule 18.02.2013


Ответы (1)


Несколько вещей, чтобы попробовать:

  • Проверьте, установлен ли mod_rewrite
  • Убедитесь, что httpd.conf настроен на AllowOverride из .htaccess.

Помните, что вам также не нужно явно указывать все маршруты, CI выполнит работу по указанию имени, указанного в URL-адресе, на контроллер в папке application/controllers/.

person Stann0rz    schedule 18.02.2013