我有什么方法可以制作用户网址吗?
之类的东西www.domain.com/username
我知道我可能不得不使用路由系统,并且我会对其他URL请求使用很多。但问题是,我需要用户名动态创建用户配置文件(如果存在)。但是我还需要记住我的其他控制器类吗?
谢谢!
答案 0 :(得分: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)
。 < / p>
这意味着my_trigger
必须是无效的用户名,但是仅无效的用户名。
这个想法是所有非用户名请求必须以额外的“触发器”段开头,否则它将被视为用户名。因此,现在必须使用/blog
访问/trigger/blog
。
您当然可以使用相应的用户名,但最终会使用不太漂亮的网址,例如/u/username
,或者使用?u=username
之类的查询字符串。
另一种选择是将应该正常调用控制器的段专门列入白名单,并将黑名单列在可用的用户名中,同时通过用户控制器路由所有其他请求。
在任何情况下,如果用户名实际上不存在 - 您需要做出适当的响应,因此不需要“动态”路由(即为每个用户创建路由)。