2010-02-16 2 views
0

Когда я получить доступ к своему сайту на MAMP, как это так, он прекрасно работаетмаршрутизация работает на локальном хосте, а не на реальном сервере

локальный/сайт/о-нас/

Когда я загрузить его на мой удаленный сервер, и доступ к ней нравится этот

http://www.server.com/site/about-us/

все запросы возвращаются к «умолчанию», установленному в bootstrap.php.

Вот моя настройка маршрута.

Route::set('default', '(<page>)') 
    ->defaults(array(
     'page' => 'home', 
     'controller' => 'page', 
     'action'  => 'index', 
    )); 

Проблема заключается в том, когда он получает загружены на мой сервер, любой запрос как/о-нас/всегда недобросовестный дома как указано при настройке маршрута. Если я изменил этот параметр по умолчанию на «about-us», каждая страница будет «о нас».

Кто-нибудь знает, что может быть причиной этого? Благодаря

UPDATE

Вот хак, который работает , но уверен, что некрасиво, как ад. Тем не менее, я бы предпочел знать, почему он не работает должным образом.

// Hack because I can not get it to go to anything except 'default' below... 

$uri = $_SERVER['REQUEST_URI']; 

$uri = str_replace(url::base(), '', $uri); 

$page = trim($uri, '/'); 

if (! $page) $page = 'home'; 


Route::set('default', '(<page>)') 
    ->defaults(array(
     'page' => $page, 
     'controller' => 'page', 
     'action'  => 'index', 
    )); 

ответ

3

Ваш код в основном поймает весь маршрут (он соответствует всем запросам). Вы должны ограничивать это так.

Route::set('static', '(<page>)', array('page' => 'about-us')) 
->defaults(array(
    'controller' => 'page', 
    'action'  => 'index', 
)); 

3-й параметр - это регулярное выражение, определяющее соответствие маршрута.

Этот маршрут будет маршрутизировать все, что соответствует регулярному выражению, контроллеру страницы и его действию индекса.

Затем вы можете использовать $page = $this->request->param('page'); в своем действии.

+0

Спасибо! Я не мог найти описание, подобное этому в документации. Спасибо! Спасибо! Спасибо! –

0

Вы не ошибаетесь в $ page за $ action?

Если я попробую это, все будет хорошо. Вот мой метод контроллеры действия:

public function action_index($page = NULL) 

{ 
    var_dump($page); 
} 

Если я просматриваю к

localhost/site/blup 

Я вижу увидеть хороший

string(4) "blup" 

быть echo'd. У меня есть настройка маршрута по умолчанию, идентичная вашей.

0

Похоже, что автоматическое обнаружение Kohana URL-адреса не работает для настройки вашего сервера ... На каком веб-сервере он не работает?

Вы можете изменить запрос :: instance() -> execute() ...линия в загрузчике, чтобы начать с:

Request :: экземпляр ($ _ SERVER [ 'REQUEST_URI']) -> Execute() ...

Это обеспечит его использует правильный URI ..

Это сказано ... поскольку разработчик Pixel говорит, ваш маршрут выглядит .. нечетным .. мне;)

Но - поскольку он работает на MAMP - Маршрут, скорее всего, не проблема.