2010-06-23 23 views
0

所以,這裏的一對Forrst,一個笨網站的例子:URI的最佳方法在CodeIgniter中路由此?

http://forrst.com/posts/PHP_Nano_Framework_WIP_Just_throwing_some_ideas_o-mU8

看那個漂亮的URL。你有根網站,然後posts,然後是帖子標題和一個簡短的摘錄。這對用戶體驗來說非常酷。

但是,我的 CodeIgniter網站的網址很簡單。例如。

http://mysite.com/code/view/120

所以它訪問控制器code,那麼函數view,然後在端部的20是郵政ID(和它基於該數據庫查詢)。

我意識到我可以做一些路由。因此,在我的routes.php文件中,我將以下內容放在:

$route['posts/(:num)'] = "code/view/$1"; - 因此,這將使http://mysite.com/posts/120http://mysite.com/code/view/120相同。更好一點,我想你會同意的。

我的問題是 - 我怎樣才能使用類似的技術Forrst,其中一篇文章的提取實際上是附加到URL?我真的不明白這是如何可能的。 PHP腳本如何確定它應該在數據庫中查找什麼內容,特別是如果有幾個標題相同的東西?

謝謝!

插孔

回答

2

要獲得您的示例中的URL,您需要添加路由規則,就像您已完成$route['posts/(:num)'] = "code/view/$1";一樣。 Forrst的網址似乎是「映射」(或類似的東西),我認爲URI的最後一部分是存儲在數據庫中的標識符(o-mU8看起來像一個散列,但我更喜歡一個int ID),所以如果他查詢,他分裂由ndashes(_)的URI,並得到了它的最後一部分,這樣你的控制器動作中:

$elements = explode('_',$this-uri-segment(2)); 
$identifier = $elements[count($elements)-1]; 

$results = $this->myModel->myQuery($identifier); 

基本上控制器/和標識符之間的字符串是完全無用的,但不是如果你的目標是一個更好的SEO。

我希望這有助於

0

查看official dicussions。通常與此有關的術語是「slug」。還沒有從CI論壇自己的方法進行測試,但建議和示例看起來不錯。

0

CI中的URL助手有一個函數調用url_title()。我自己並沒有使用它,但我認爲這是你正在尋找的。