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 для чайников. Hello world.
  2. Kohana для чайников. Инсталляция.
  3. Kohana для чайников. Настраиваем базу данных
  4. Kohana для чайников. Пользовательские конфиги
  5. Kohana для чайников. Простейший роутинг

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

10 комментов

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

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

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

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

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

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

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

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

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

    Такая траблятина, 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 нужно явно указывать

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

Ответить