Kohana для чайников. Избавляемся от index.php

kohana В прошлый раз я обрисовал схему построения URL в движке Kohana и вскользь упомянул, что можно убрать фронт-контроллер index.php из URL.

По предложению Nayjest я решил заострить внимание на этом вопросе. Сегодня мы будем превращать URL вида

  • http://localhost/kohana/index.php/hello/index

в

  • http://localhost/kohana/hello/index

Задача и правда не настолько тривиальная, как кажется, и делится на две подзадачи:

1. Сделать, чтобы URL без index.php был работоспособным
2. Сделать так, чтобы функции Kohanа генерировали внутренние ссылки без index.php

Первая задача традиционно решается с помощью Rewrite. В инсталляции Kohana лежит файл example.htaccess. Достаточно просто переименовать его в /.htaccess, перенести в корень инсталляции Kohana. Ну и ещё пожалуй следует исправить переменную RewriteBase и указать там путь инсталляции

1
2
# Installation directory
RewriteBase /kohana

Вторая задача по-разному решается в Kohana2 и Kohana3 с помощью изменения настроек.

Для Kohana2 это файл application/config/config.php, в котором нужно изменить настройку $config['index_page']

1
2
//$config['index_page'] = 'index.php';
$config['index_page'] = '';

Для Kohana3 это application/bootstrap.php, в котором нужно поменять параметры вызова Kohana::init

1
2
//Kohana::init(array('base_url' => '/kohana'));
Kohana::init(array('base_url' => '/kohana','index_file' =>''));

Вот вроде и всё. =)

Посты по теме:

  1. Kohana для чайников. Инсталляция.
  2. Kohana для чайников. Hello world.
  3. Kohana для чайников. Настраиваем базу данных
  4. Kohana для чайников. Простейший роутинг
  5. Kohana для чайников. Работа с шаблонами.

Категории Kohana |
автор: altesack / Воскресенье, Декабрь 06, 2009 / 5 комментов »

5 комментов

    Примеры в Kohana2 и Kohana3 рядом очень наглядны. И что печально, в Kohana3 явная тенденция к “много букв” в написании простых вещей

    @ Nayjest, web-superman:
    Поглядим что дальше будет. Может эти буквы окажутся нелишними :)

    По-моему как раз все тривиально……:)

    Ошибка в предложении “Достаточно просто переименовать его в /htaccess”. Вместо слеша точка нужна. Конечно мелочь, но все же :)

    @ Дмитрий:
    Спасибо. Исправился

Ответить