2011-06-09 108 views
3

有沒有什麼辦法可以讓用戶的網址?像笨URL問題

www.domain.com/username

我知道我可能要使用的路由系統,和我使用這個有很多其他的URL請求。但事情是,我需要用戶名來動態創建用戶配置文件(如果存在)。但是我還需要記住我的其他控制器類嗎?

謝謝!

回答

3

我看你實現對用戶通過創建一個匹配的用戶名步驟都在你的其他有效途徑的可能性。

你可以嘗試路由所有請求用戶名,但您的其他控制器(及其他有效路由)提供觸發:

// Route everything to users profile 
$route['(:any)'] = 'users/profile/$1'; 

// Route all requests after "my_trigger" as normal 
$route['my_trigger/(:any)'] = '$1'; 

*我不知道,但你可能需要追加更多/(:any) s到觸發路線。

這意味着my_trigger必須是一個無效的用戶名,但將是唯一無效用戶名。

的想法是,所有非請求的用戶名必須用額外的「觸發」部分的前面,否則會被認爲是一個用戶名。所以/blog現在必須與/trigger/blog訪問。

你當然也可以用相同的用戶名來代替,但最終會得到一個不太漂亮的url,比如/u/username,或者使用一個查詢字符串,如?u=username

另一種選擇是明確的白名單段應該從現有的用戶名調用控制器爲正常,並且它們列入黑名單,同時通過用戶控制器路由所有其他請求。

在任何情況下,如果用戶名實際上不存在 - 你需要作出適當的反應,因此對於「動態」路線(即創建爲每一位用戶的路由)沒有真正的需要。

+2

你已經得到這個運行?我很好奇,因爲我從來沒有真正使用過這種路由方法。這工作?您可以隨心所欲地取消選中接受,並將問題留待一兩天 - 其他人可能會有寶貴的意見。 – 2011-06-09 14:58:00

+0

順便說一句,嘗試使用正則表達式而不是':any'作爲路由,更有意義並且將讀取斜線而不是放棄它們。 – 2011-06-10 23:59:07