2010-02-16 101 views
0

當我訪問我的網站上MAMP像這樣,它的偉大工程路由工作在本地主機,但不是活的服務器上

本地主機/網站/約-US/

當我把它上傳我的遠程服務器,並獲得像這樣

http://www.server.com/site/about-us/

所有請求都會返回到bootstrap.php中設置的「默認」。

這是我的路線設置。

Route::set('default', '(<page>)') 
    ->defaults(array(
     'page' => 'home', 
     'controller' => 'page', 
     'action'  => 'index', 
    )); 

的問題是,當它被上傳到我的服務器,喜歡/ - 我們爲設定路線時指定/總是默認爲的任何請求。如果我將該默認值更改爲「about-us」,則每個頁面都會顯示「關於我們」。

有誰知道可能是什麼原因造成的?由於

UPDATE

這裏是一個黑客工具,工作,但肯定醜得要命。仍然我想知道爲什麼它不按預期工作。

// Hack because I can not get it to go to anything except 'default' below... 

$uri = $_SERVER['REQUEST_URI']; 

$uri = str_replace(url::base(), '', $uri); 

$page = trim($uri, '/'); 

if (! $page) $page = 'home'; 


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

回答

3

你的代碼基本上是捕獲所有路由(它與所有請求匹配)。你應該這樣限制它。

Route::set('static', '(<page>)', array('page' => 'about-us')) 
->defaults(array(
    'controller' => 'page', 
    'action'  => 'index', 
)); 

第三個參數是一個正則表達式,它定義了路徑應匹配的內容。

該路由會將正則表達式中匹配的所有內容路由到頁面控制器及其索引操作。

然後,您可以在您的操作中使用$page = $this->request->param('page');

+0

謝謝!我無法在文檔中的任何地方找到這樣的描述。謝謝!謝謝!謝謝! – 2010-05-21 01:27:25

0

您是不是錯誤了$ page $ action?

如果我嘗試這個,它工作得很好。這裏是我的控制器操作方法:

public function action_index($page = NULL) 

{ 
    var_dump($page); 
} 

如果我瀏覽到

localhost/site/blup 

我看的見一個漂亮的

string(4) "blup" 

被回顯。我的默認路由設置與您的相同。

0

這聽起來像Kohana的URL自動檢測不適用於您的服務器設置...什麼Web服務器失敗?

你可以改變Request :: instance() - > execute()...在引導線入手:

支持::實例($ _ SERVER [ 'REQUEST_URI']) - >執行()...

這將確保它使用了正確的URI ..

話雖這麼說......作爲像素開發商說,你的路線看起來..奇怪..我;)

但是 - 因爲它適用於甲基苯丙胺 - 這條路線可能不是問題。

相關問題