Маршрутизация в зависимости от субдомена - PullRequest
1 голос
/ 14 января 2010

Пожалуйста, помогите мне. Я совершенно новичок в кохане. Как лучше всего сделать так, чтобы контроллер был выбран на основании поддоменов. Например:

www.site.com -> Контроллер: siteroot. Метод: запустить admin.site.com -> Контроллер: adminsite. Метод: запустить moderator.site.com -> Контроллер: модераторский сайт. Метод: запустить Director.site.com -> Контроллер: директорский сайт. Метод: запустить по умолчанию: супервизор: партнерский сайт. Метод: запустить

Метод run выполняет действие для этих поддоменов и выводит страницу из модулей наблюдателей.

Я использую Kohana v3.0

Ответы [ 4 ]

4 голосов
/ 14 января 2010

Я не думаю, что Kohana предлагает какой-либо способ справиться с этим напрямую, но вы всегда можете добавить некоторый пользовательский код в ваш файл bootstrap.php, который устанавливает различные маршруты в зависимости от текущего субдомена:

switch ($_SERVER['SERVER_NAME'])
{
    case 'site.com':
        // Default routes.
        $controller = 'siteroot';
        break;
    case 'admin.site.com':
        // Admin routes.
        $controller = 'adminsite';
        break;
    // Etc.
}

Route::set('default', '(<controller>(/<action>(/<id>)))')
     ->defaults(array(
                'controller' => $controller,
                'action' => 'run')); 

Вам действительно нужен отдельный домен для каждого случая? Возможно, было бы разумнее использовать site.com/admin, site.com/moderator и т. Д.

1 голос
/ 06 марта 2010

Я не думаю, что это будет работать из коробки, MatW. Будет верно, если это подкаталог app_path, но если это не так, он никогда не будет перенаправлен в index.php папки Это можно сделать с помощью htaccess или httpd.ini из apache.

0 голосов
/ 10 января 2012

Похоже, что кто-то фактически создал субмодуль для маршрутизации на поддоменах:

https://github.com/jeanmask/subdomain

0 голосов
/ 14 января 2010

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

поддомен: admin.site.com

отображается в каталог: ~ / public_html / admin /

контроллер: Controller_Adminsite

каталог контроллера: ~ / application / classes / controller / adminsite.php

маршрут для bootstrap.php:

Route::set('admin', 'admin(/<action>(/<id>))')
        ->defaults(array(
                'controller' => 'adminsite',
                'action'     => 'run',
        ));
...