Решил все-таки вынести в «Напильник» кусок текста из «Наша первая страница на Kohana«, ибо где же еще искать решение этой проблемы. А дело, напомню, в том, что использование url::redirect() с относительными URL приводит к тому, что появляется index.php.
Решение
Как обычно, расширяем функциональность хэлпера через создание своего скрипта. Создадим application/helpers/MY_url.php с таким вот кодом:
<?php defined('SYSPATH') or die('No direct script access.'); class url extends url_Core { public static function site($uri = '', $protocol = FALSE) { if ($path = trim(parse_url($uri, PHP_URL_PATH), '/')) { // Add path suffix $path .= Kohana::config('core.url_suffix'); } if ($query = parse_url($uri, PHP_URL_QUERY)) { // ?query=string $query = '?'.$query; } if ($fragment = parse_url($uri, PHP_URL_FRAGMENT)) { // #fragment $fragment = '#'.$fragment; } // Concat the URL return url::base(FALSE, $protocol).$path.$query.$fragment; } } |
Изменили только один метод site(), теперь он возвращает путь без index.php (благодаря параметру FALSE в вызове url::base()). Проверяем, используем.
Update. Конечно же, все решилось намного проще - устанавливаем в config/config.php параметр index_page в пустую строку и все, никаких правок. Спасибо cwer.
Разве не за это отвечает в конфиг.пхп
$config['index_page'] = ‘index.php’;
?
Мда… вот что значит недосмотрел пару строчек в исходнике
Конечно, установка параметра $config['index_page'] приводит к тому же результату, но с меньшими усилиями. Смутил меня комментарий к данному пункту…