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 и указать там путь инсталляции

# Installation directory
RewriteBase /kohana

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

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

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

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

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

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

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

  1. Nayjest, web-superman

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

  2. altesack Автор записи

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

  3. Слава

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

  4. Дмитрий

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

  5. altesack Автор записи

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

  6. sabyr

    @ altesack:
    а где можно взять учебники или примеры?

  7. Накукрыскин

    Если не будут работать ЧПУ ссылки, которые описаны выше, а все сделали как описано необходимо проверить — включено в настройках сервера на данную директорию AllowOverride All. В частности у меня как раз так и было, но это уже относится к настройке Apache (в nginx несколько другие настройки).

  8. anton shilo

    Для версии kohana 3.1.1 можно вот так:

    Kohana::init(array(
    ‘base_url’ => ‘/’,
    ‘index_file’ => false,
    ));

  9. Theodor

    Такая траблятина, Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log. читал что из rewritebase то что его в .htaccess нужно явно указывать

  10. Андрей

    Отлично, спасибо! А вот еще такая мелочь, но все же, думаю, относится к данной статье: как сделать так, чтобы ‘/index.php/’ убирался из URL при вводе его вручную?

Комментарии запрещены.