2013-10-02 213 views
0

我有基於URI從數據庫中生成的頁面。 Functons,因爲它應該,但我不能設置我的routes消除從URL的控制器和功能。路由問題 - Codeigniter

$route['studios/(:any)'] = 'studios/location/$1'; 

現在,我有路由來顯示控制器名稱和URI變量(無論可能)。但是,我想消除控制器名稱,只顯示被稱爲URL的URI變量。很難解釋 - 希望有人拿起我的意思......

當前網址是:domain.com/studios/studio1

但我只想顯示:domain.com/studio1

我試過$route['/(:any)'] = 'studios/location/$1';,但是這搞亂了我的整個網站。

幫助?

回答

1
$route['studios(/:any)*'] = 'studios/location'; 

這條路線將迫使一切從studiosstudios/location。然後,您可以訪問任何使用URI段的參數:

$id = $this->uri->segment(2); 

如果您的網址是somewhere.com/studios/location/2$id將解析爲2

但是,因爲你希望它僅僅是從根本上,你會必須把你的替代路線的路線文件的底部,故最後評估:

// all other routes here. Which must be specifically 
// defined if you want a catch all like the one you mentioned 
$route['(:any)'] = 'studios/location'; 

另外,如果你想有一個高維護的網站,你可以指定路由的集合,像這樣:

$route['(studio1|studio2|studio3)'] = 'studios/location/$1'; 
+0

完美!謝謝。很好的解釋。 –

0

它是如何「搞亂你的網站」?

在任何情況下,你不應該有/前(:任何)

剛:

$route['(:any)'] = 'studios/location/$1'; 

編輯:

前的$路線[ '(:任何)'] ,你需要指定所有你的控制器的路由;這是非常正常的,不知道如果我把它叫做「高維修」,但你需要決定

+0

可能導致該路由強制每個請求到工作室/位置 –

+0

這是OP說他想要的;啊,我明白你的意思了。這解釋了「弄亂我的整個網站」。我會編輯 – jmadsen

+0

是的,它會被認爲是高維護的唯一原因是因爲默認情況下,CI將通過控制器/方法/參數訪問,當有一個捕獲所有它幾乎劫持。您需要爲捕捉所有頁面上的所有頁面指定一個路由,並且如果由於某種原因導致站點不斷變化或者將其交給其他人,他們必須知道該路由。 –