Контент


Избавляемся от index.php при url::redirect

Решил все-таки вынести в «Напильник» кусок текста из «Наша первая страница на 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.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Опубликовано в напильник.

Теги: , , .


Комментарии (2)

Будьте в курсе обсуждения, подпишитесь на RSS ленту комментариев к этой записи.

  1. cwer.livejournal.com/ пишет:

    Разве не за это отвечает в конфиг.пхп
    $config['index_page'] = ‘index.php’;
    ?

  2. BIakaVeron пишет:

    Мда… вот что значит недосмотрел пару строчек в исходнике :)
    Конечно, установка параметра $config['index_page'] приводит к тому же результату, но с меньшими усилиями. Смутил меня комментарий к данному пункту…



Можно включить подсветку кода: <code><pre lang="">...</pre></code>
Разрешены некоторые HTML теги

или используйте trackback.