2012-07-19 14 views
0

當您只希望第一個段有效時,剛剛得到關於codeigniters路由的問題。當谷歌搜索似乎不能找到一個很好的答案。帶有(:any)重複項的Codeigniter 2路由

所以,我對於我的普通頁面的基本路線:

$route['(:any)'] = 'common/pages/view/$1'; 

頁是類和視圖是與頁面的名稱作爲變量的速度(在方法很像的詞的例子手冊)。

這工作得很好,當我去:

www.mysite.com/mypage/ 

然而,當我再轉到:

www.mysite.com/mypage/randomstring/ 

這也加載我的空間基本上是重複的。

他們的方式是告訴任何路線只適用於第一部分,如果更多存在做404?

如果情況變得更糟,我只需在方法中添加一個檢查來查看第二段是否存在,如果show_404存在,但只是好奇它是否可以純粹在路由中完成。

感謝您的閱讀,我希望這是有道理的。

回答

1

你可以只使用正則表達式來代替?

$route['([^/]+)'] = 'common/pages/view/$1'; 

這將防止您的域的URL從含/如果確實如此,它將調用默認的404頁面。

我沒有測試過這個,但它「應該」的工作;)

+0

吹走了。我不是很喜歡正則表達式,但另一個嘗試和提高我的技能的理由。非常感謝。它確實工作大聲笑:) – fl3x7 2012-07-19 15:57:45

+0

這和我的hacky aproach tsk stk – Dale 2012-07-19 16:53:45

+0

一模一樣,但它只有一行;) – Gavin 2012-07-20 08:23:00

1

試試這個:

$route['(:any)/(:any)'] = "none_existent_controller"; 
$route['(:any)'] = "common/pages/view/$1"; 
+0

這是一個很棒的想法。引導到一個沒有現有的控制器是有點哈克雖然哈哈。感謝您的建議。 – fl3x7 2012-07-19 15:54:48

+0

好吧,你可以去控制器專門設置來處理這種情況,並調用show_404();功能 – Dale 2012-07-19 16:52:18

+0

這是一個很好的觀點。 Codeigniter真棒:P – fl3x7 2012-07-19 17:07:26