加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Codeigniter中的路由 – 自动

发布时间:2020-12-13 13:06:58 所属栏目:PHP教程 来源:网络整理
导读:我有Codeigniter路线的问题.我希望我网站上的所有注册用户都有自己的“目录”,例如:www.example.com/username1,www.example.com/username2.该“目录”应映射到控制器“polica”,方法“ogled”,参数“username1”. 如果我喜欢这样,那么每个控制器都映射到这
我有Codeigniter路线的问题.我希望我网站上的所有注册用户都有自己的“目录”,例如:www.example.com/username1,www.example.com/username2.该“目录”应映射到控制器“polica”,方法“ogled”,参数“username1”.

如果我喜欢这样,那么每个控制器都映射到这条路线:“polica / ogled / parameter”.不行:

$route["(:any)"] = "polica/ogled/$1";

这有效,但我总是在routes.php中手动输入信息:

$route["username1"] = "polica/ogled/username1";

我如何做到这一点,这将自动化?

更新:
例如,我有控制器名称广告.例如,如果您访问www.example.com/ads/
会有列出的广告.如果您访问www.example.com/username1,则会按用户username1列出广告.还有控制器用户,个人资料,最新,……

我的当前routes.php:

$route['oglasi'] = 'oglasi';
$route['(:any)'] = "polica/ogled/$1"
$route['default_controller'] = 'domov';
$route['404_override'] = '';

我解决了这段代码的问题:

$route['oglasi/(:any)'] = 'oglasi/$1';
$route['(:any)'] = "polica/ogled/$1"
$route['default_controller'] = 'domov';
$route['404_override'] = '';

此致,马里奥

你的路线的问题是,通过使用:任何你匹配,实际上…任何路线,所以你几乎卡在那里.
我想你可能有两个解决方案:

1)您可以选择性地重新路由所有站点控制器,例如:

$route['aboutus'] = "aboutus";
$route['where-we-are'] = "whereweare";
//And do this for all your site's controllers
//Finally:
$route['(:any)'] = "polica/ogled/$1";

所有这些路线必须在任何之前出现,因为它们按照它们出现的顺序被读取,并且如果你放置:任何在开头它将很乐意跳过所有其余的路线.

评论后编辑:

我的意思是,如果您要与任何段匹配,这意味着您根本不能使用任何控制器(默认情况下,这是第一个URI段),因为路由器将始终使用您的路由器重新路由您定义的法律.
为了允许CI执行其他控制器(无论它们是什么,我只是使用了一些常见的网页,但实际上可以是一切),您需要通过将它们从重新路由中排除来允许它们.你可以通过在任何规则之前放置它们来实现这一点,这样每次CI通过你的路由规则时,它首先解析你“转义”的那个,并且只有当它们与URL上找到的任何内容不匹配时,它才会传递给它到:任何规则.

我知道这仍然是代码冗长,但正如你所说,它们肯定会低于6K.
由于我不知道您的URL和Web应用程序的实际结构,因此它是我想到的唯一解决方案.如果您提供更多信息,例如如何塑造您应用的常规网址,那么我可以更新我的答案

/结束编辑

这不是一个实用的解决方案,因为它需要大量的代码,但是如果你想要这样的设计,这是我想到的唯一方法.
此外,考虑你可以使用正则表达式作为$route索引,但我不认为它可以在这里工作,因为你的用户名不太可能以这种方式匹配,但我只想指出可能性.

要么

2)你可以稍微改变你的设计模式,并为用户名分配另一条路线,这是一条沿线的

$route['user/(:any)'] = "polica/ogled/$1";

这将产生相当漂亮(和语义)的URL,并且将避免逃避其他路由的所有麻烦.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读