我不知道这是否是奇怪的请求,但我有一个显示用户个人资料的页面。每个用户当然都有唯一的用户名,这些用户名包含在与其姓名相关联的链接中。点击后,它会转到他们的个人资料:
profile/profile_guest/username
当用户点击其中一个配置文件时,它会转到用户的个人资料,地址栏中的网址为:
http://domain.com/profile/profile_guest/ahlam
我想要实现的是配置routes.php来处理这个问题。所以一旦点击,它就会进入个人资料页面,但URL地址栏中显示的是:
domain.com/ahlam
为此,我尝试了:
$route['someTest'] = "profile/profile_guest/$1";
公平地说,它不起作用,仍然显示整个URL。我该怎么做才能解决这个问题?
全部谢谢
答案 0 :(得分:0)
您应该使用类似
的内容$route['sometest/(:any)'] = "your/link/$1";
'$ 1'就像你将从'(:any)'部分收到的参数。
答案 1 :(得分:0)
//site.com/john = "profile/profile_gest/john"
$route['([a-z0-9\-_]+)'] = "profile/profile_gest/$1";
//where $1 = "john", so "john" respects the pattern set below
但CI路由将理解任何URI匹配此模式,如“index”,“post”,...是配置文件控制器的路由。
为了防止您可以向网址添加规范,例如:
//site.com/john.html
$route['([a-z0-9\-_]+)\.html'] = "profile/profile_gest/$1";
//site.com/user-john
$route['user\-([a-z0-9\-_]+)'] = "profile/profile_gest/$1";
或
如果您确定任何用户名不会与其他页面竞争 始终将此规则放在底部,以便CI在此之前检查所有其他路由规则。
注意:在此之前,您的htaccess 必须设置为从您的网址中删除index.php。