2011-06-09 112 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