Маршрутизация работает на локальном хосте, но не на живом сервере - PullRequest
0 голосов
/ 16 февраля 2010

Когда я захожу на свой сайт с помощью MAMP, он отлично работает

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

Когда я загружаю его на свой удаленный сервер и получаю к нему доступ вот так

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

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

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

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

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

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

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 ]

3 голосов
/ 16 февраля 2010

Ваш код - это, по сути, перехват всех маршрутов (он соответствует всем запросам).Вы должны ограничить его следующим образом.

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

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

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

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

0 голосов
/ 23 февраля 2010

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

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

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

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

При этом ... как говорит Pixel Developer, ваш маршрут выглядит ... странно ... для меня;)

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

0 голосов
/ 16 февраля 2010

Не ошиблись ли вы $ page за $ action?

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

public function action_index($page = NULL)

{
    var_dump($page);
}

Если я перейду к

localhost/site/blup

вижу, вижу хороший

string(4) "blup"

эхо. У меня настройка маршрута по умолчанию идентична вашей.

...