2014-05-13 1 views
0

Я использую Kohana Framework 3.2Использование Кохана Маршруты для перенаправления

Обычно в моем загрузочном файле, я могу настроить маршрут :: установить так:

Route::set('faq', 'faq')->defaults(array('controller' => 'home', 'action' => 'faq')); 

Это делает так example.com/faq указывает на мой контроллер дома, действие faq.

Я хотел бы знать, могу ли я также настроить перенаправление таким образом?

Итак, я могу сказать, что example.com/faq следует перенаправить на example.com/thegreatfaqs?

Или должен использовать маршрут: установленный как указано выше, контроллеру, который затем запрашивает переадресацию в/thegreatfaqs?

ответ

1

Там нет ничего встроенного с Кохана, чтобы справиться с перенаправлением в пределах маршрутов.

Что я обычно делаю, это маршрут к контроллеру перенаправления, который имеет все мои правила перенаправления, и я обрабатываю там перенаправление.

+0

Как вы это сделаете? Маршрут к контроллеру перенаправления = это означает, что вы делаете маршрут, который захватывает все (например, маршрут по умолчанию), а затем от контроллера, который вы проверяете с помощью своих правил, если example/faq следует перенаправить на google.com/blabla? Что, если это не так, и нам нужны другие маршруты? Вы отправляете маршрут перенаправления в конце всех других маршрутов? – Karem

+1

да, это последний маршрут. В случае, если совпадений перенаправления не найдено, вы можете выбросить исключение 404 или если у вас есть какой-либо контроллер/действие с ошибкой, вы можете просто вызвать это напрямую. –

0

Вы можете настроить свой маршрут, как это ....>

Route::set('faq', 'thegreatfaqs(/<action>(/<id>))') 
->defaults(array(
    'controller' => 'home', 
    'action' => 'faq', 
)); 
+0

Это указывает на контроллер/действие, которое я не ищу. Я хотел бы настроить перенаправление, поэтому example.com/faq может указывать на что угодно, это может быть внешний сайт, такой как google.com/faq – Karem

+0

okay .. более чистым решением было бы реализовать, как ответил Скотт здесь. – TechBuddy

1

Вы можете сделать это с помощью Route filter, но я думаю, что это Bad Idea, так как вы прерывания нормального потока приложения Kohana.

Route::set('redirecturl', 'redirecturl') 
->filter(function($route, $params, $request) { 
    header('Location: http://www.example.com/'); 
    exit; 
}); 

Я бы предложить Redirect rule (Apache .htaccess) или перенаправление из выделенного действия контроллера, как упомянуто Скотт является гораздо чище решением.