0

我有一个简单的问题,但我就是想不通。我编写了一个从 url 读取参数(一个参数是用户名)并查询该用户的所有数据并将其显示在页面中的方法。

唯一的问题是该方法是控制器的一部分,自然它必须显示在 url 中(简单地说:不太适合共享。我还必须编写如下字符串:

www.domain.com/controller/profile_guest?user=username

我想摆脱用户名之前的所有内容。所以它显示为:

www.domain.com/username

现在这里有两个场景需要介绍。

a) 有人浏览目录,点击个人资料名称,然后重定向到个人资料页面。一旦他喜欢他所看到的,他就会复制网址并分享它。

b)有人收到共享链接并点击它,所以应该加载的是带有他收到的 url 的配置文件页面,而不是显示控制器和方法的完整页面。

这有可能实现吗?

谢谢您的帮助 :)

更新:

$route['default_controller'] = "main/index";
$route['404_override'] = '';
4

1 回答 1

1

你可以使用这条路线:

$route['(:any)'] = "controller/profile_guest/$1";

但任何其他路线,您都需要在此路线上方手动编写。例如:

$route['controller/view'] = "controller/view";
$route['(:any)'] = "controller/profile_guest/$1";

解释:

路由按照它们出现在您的 routes.php 文件中的顺序进行处理,因此如果您放在$route['(:any)']顶部,它将处理任何事情。

假设你有一个控制器和一个函数,并且你需要执行它,例如:www.domain.com/contoller/function,你不能执行你的函数,因为它会匹配这个路由$route['(:any)'],所以你需要为它定义一个路由,$route['(:any)'] 例如:

$route['contoller/function'] = "controller/function"
$route['(:any)'] = "controller/profile_guest/$1";

并对所有控制器及其功能做同样的事情,但你必须放在$route['(:any)']最后一条路线上。

于 2013-04-21T14:22:40.887 回答