2011-04-18 25 views
0

我正在開發一個使用CodeIgniter的手機網站。我對正則表達式和mod_rewrite感到很舒服。我的問題是關於如何在codeigniter中創建像這樣的seo友好url。codeigniter和seo

http://mysite.com/phones/samsung/model_name/

我能做到這一點使用類別,分類別等等這樣的ID。

http://mysite.com/phones_c23/samsung_s34/model_name_m32/

但是我真的尋找更多的清潔溶液(如上面的例子)。

路線不適合我這種情況,因爲該網站的管理員可以創建無限的主要類別(如mysite.com/phones/ mysite.com/tablet/)笨的

回答

1

使用重映射功能。 URI的第二部分通常確定控制器中的哪個函數被調用。 CodeIgniter允許你通過使用_remap()來覆蓋這個行爲。

你可以做的是這樣的:

在控制器中進行功能_remap(){} 現在,在重映射功能使用URL段讓你的URL的片段。

如果查詢是這樣的:http://mysite.com/phones/samsung/model_name/

你的重映射應該找到段「三星」,「手機」和「MODEL_NAME」 ..運行一個查詢,以獲得詳細信息(coresponding IDS等),然後你瞧有一個動態的運行系統。

欲瞭解更多信息,檢查:http://codeigniter.com/user_guide/general/controllers.html#remapping

0

我不會放棄這麼快的路由。控制器方法不必是url中的第二個參數。如果你拿你的例子來看看http://mysite.com/phones/samsung/ABCD/的網址,那麼你可以在routes.php文件裏面

$ route ['phones /(:any)/(:any)'] =「phones /嗒嗒/ $ 1/$ 2" ;

在您的「電話」控制器內部,您將擁有一個名爲「blah」的功能(可能很好地重新命名),手機制造商將是第一個參數,手機型號將是第二個參數。這將適用於所有制造商和所有型號。根據不同的組合,您不必擁有不同的控制器或方法。

如果它不總是手機(例如它可能是一個平板電腦),你可能有一個像http://mysite.com/tablet/samsung/ABCD/這樣的網址,那麼你的routes.php文件將需要像$ route ['(:any) /(:any)/(:any)'] =「東西/等等/ $ 1/$ 2/$ 3」;然後,「Something」控制器將具有可通過電子類型(手機,平板電腦等),製造商和型號的「blah」功能。

爲了使它更簡單,正如@Stewie所說的,你可以使用_remap()。用戶指南有一些關於如何使用它的良好文檔和示例http://codeigniter.com/user_guide/general/controllers.html#remapping