当我的用户注册用户名 mysite.com/username 时,我想为他们创建这种 URL
我在这个网站上搜索了很多帖子,我看到有人这样做 mysite.com/user/username
我想摆脱用户,直接访问 mysite.com/username
最好的方法是什么?
当我的用户注册用户名 mysite.com/username 时,我想为他们创建这种 URL
我在这个网站上搜索了很多帖子,我看到有人这样做 mysite.com/user/username
我想摆脱用户,直接访问 mysite.com/username
最好的方法是什么?
您可以查看路线:
http://codeigniter.com/user_guide/general/routing.html
你在 config/routes.php 中输入路由
举个例子:
$route['([a-zA-Z]+)'] = "main_controller/user_function/$1";
但正如@Nylon Smile 上面所说,如果您尝试使用注销,它将尝试访问注销的用户页面。
我对 CodeIgniter 不熟悉,但这里是人们为什么不使用 mysite.com/username 的一般答案:
mysite.com/user/username 是一个很好的解决方案,因为通常 URL 调度程序将用户名传递给处理用户页面的函数/模块。
mysite.com/username 是一个糟糕的解决方案,因为您的调度员必须在所有其他规则之后有一个贪婪规则,才能将除先前规则之外的所有内容传递给处理用户页面的模块/函数。
现在假设您想使用 mysite.com/username 并假设您有 mysite.com/logout 将用户带到注销页面。用户来并使用“注销”作为他的用户名来注册自己。那么通过访问 mysite.com/logout 先生,您会怎么说注销先生想要注销或想要查看他的页面?
您可以通过在 'config/routes.php' 中的 $route 数组中添加一个项目来做到这一点:
$route['([a-zA-Z0-9_-]+)'] = "user/index/$1";
这会将 example.com/whatever 映射到“用户”控制器的“索引”功能。
是的,如果您有一个“注销”控制器和一个名为“注销”的用户,就会发生冲突。您可以通过将以下项目添加到上述项目之前的 $route 数组来解决此问题:
$route['logout'] = "logout";
并保留包含您的控制器的用户名黑名单。这需要一些维护,因此您可能希望使用此处列出的其他解决方案,这些解决方案在其用户名之前的 URL 中添加类似“user/”的前缀,并避免所有这些。