我有一个简单的问题,但我无法弄清楚。我写了一个从url读取参数的方法(一个参数,即用户名),并查询该用户的所有数据并将其显示在页面中。
唯一的问题是该方法是控制器的一部分,当然它必须显示在url中(简单地说:不太好用于共享。另外我必须按如下方式编写字符串:
www.domain.com/controller/profile_guest?user=username
我想摆脱用户名前的所有内容。所以它显示为:
www.domain.com/username
现在有两种情况可供选择。
a)有人浏览目录,点击个人资料名称,然后重定向到个人资料页面。在那里,他喜欢他所看到的,他复制网址,并分享它。
b)有人收到共享链接并点击它,所以加载的是配置文件页面,其中收到的网址不是显示控制器和方法的完整链接。这有可能实现吗?
感谢您的帮助:)
更新
$route['default_controller'] = "main/index";
$route['404_override'] = '';
答案 0 :(得分: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)']
放在最后一条路径上。