CodeIgniter - 如何使用其他名称路由控制器?

时间:2015-05-20 13:36:53

标签: codeigniter routes codeigniter-3

我在codeIgniter中安装了一个名为bit_auth的身份验证模块。 我有一个名为“bit_auth”的模块的控制器,所以在我的控制器上调用函数时,我的网址将是这样的:

http://(mydomain.com)/bit_auth/
http://(mydomain.com)/bit_auth/edit_user/1
http://(mydomain.com)/bit_auth/activate/7b60a33408a9611d78ade9b3fba6efd4fa9eb0a9

现在我希望将bit_auth控制器路由到http://(mydomain.com)/auth/... 我在“config/routes.php”中定义了这些路线:

$route['auth/(:any)'] = "bit_auth/$1";
$route['auth'] = "bit_auth";

我使用时工作正常:http://(mydomain.com)/auth/
在打开以下链接时显示404页面未找到错误:
http://(mydomain.com)/auth/edit_user/1
http://(mydomain.com)/auth/activate/7b60a33408a9611d78ade9b3fba6efd4fa9eb0a9

我做错了什么?

2 个答案:

答案 0 :(得分:4)

因为你使用的路径比路线更多,所以你必须这样做:

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As   System.EventArgs) Handles Label1.Click
    ''Key 7
    keybd_event(Keys.D7, 0, KEYEVENTF_KEYDOWN, 0)
    keybd_event(Keys.D7, 0, KEYEVENTF_KEYUP, 0)

希望这有帮助!

答案 1 :(得分:1)

在谷歌搜索和调查之后我看到他们在CodeIgniter中使用另一种语法进行路由的地方直接使用 regular expression 而不是使用codeigniter描述的模式如< em> (:any) (:num) 的帮助。我刚刚在(:any)中将 (.+) 替换为 config/routes.php ,现在它已经完美无缺。

$route['auth/(.+)'] = "bit_auth/$1";
$route['auth'] = "bit_auth";

因为在CodeIgniter中(:any)(:num)不包括/ ,并且它们是([^\/]+)和{{1}的正则表达式模式的别名因此,如果您想匹配包含任意数量(\d+)的链接的其余部分,您可以使用其模式中包含/的手动正则表达式模式(.+),并将触发所有其余的的URL。