2014-02-18 84 views
0

我想要这样的网址:http://somecontroller.example.com其中somecontroller将是任何控制器...我使用Kohana3.1。kohana 3.1路由,设置控制器转发域,在url

我知道路由以及使许多路线,但我没有一个如...

我有引导的默认路由:

Route::set('default', '(<controller>(/<action>(/page<page>)(/<id>)))') 
    ->defaults(array(
       'directory' => 'index', 
     'controller' => 'main', 
     'action'  => 'index', 
    )); 

回答

0

Kohana中的路由系统只允许你解析URI,所以你不能以一种干净的方式去做。但是,你可以做这样的事情有你想要的行为:

$controller = preg_match('/^([\w]+)\.example\.com$/', $_SERVER['HTTP_HOST'], $match) 
? $match[1] 
: 'main'; 

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

然而,此路由不会在控制台(php index.php --uri=<uri>)工作,因为HTTP_HOST没有定义。

+0

感谢您的回答......我将这段代码添加到自举程序中,但仍然无法正常工作......我需要的确是http://somecontroller.example.com这样的URL ......无论如何,这些操作都不会从bootstrap或从.htaccess,或者如果它将被制作成任何其他方法... – user3059706

+0

使用'$ _SERVER ['HTTP_HOST']',您可以将您的路由更改为任何您想要的。你只需要加入一个条件if($ _SERVER ['HTTP_HOST'] ==='somecontroller.example.com'){你的路线,同时通过somecontroller.example.com访问你的网站} else {你的路线在访问你的网站时由其他域}。在你的路线上,不要放置一个控制器标签,而是把它放在默认值中。 –