2014-02-18 33 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 {你的路線在訪問你的網站時由其他域}。在你的路線上,不要放置一個控制器標籤,而是把它放在默認值中。 –