路由取决于子域

时间:2010-01-14 11:35:08

标签: php routing subdomain kohana

请帮帮我。我对kohana很新。最好的方法是根据子域选择控制器。例如:

www.site.com - >控制器:siteroot。方法:运行 admin.site.com - >控制器:adminsite。方法:运行 moderator.site.com - >控制器:版主。方法:运行 director.site.com - >控制人:directorite。方法:运行 默认:主管:合作伙伴。方法:运行

run方法为这些子域执行操作,并将从监督模块中带来一个页面。

我使用kohana v3.0

4 个答案:

答案 0 :(得分:4)

我认为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 :(得分:1)

我认为它不会开箱即用,MatW。 如果它是app_path的子目录,那将是真的,但如果不是,它将永远不会路由到文件夹的index.php。 可以使用apache中的htaccess或httpd.ini来完成。

答案 2 :(得分:0)

由于该子域无论如何都将映射到目录,因此根本不需要添加任何自定义代码,这正是Kohana 3中Routes的用途。

子域名: 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',
        ));

答案 3 :(得分:0)

看起来有人实际上已经创建了一个用于执行子域路由的子模块:

https://github.com/jeanmask/subdomain