在路由中使用连字符( - )代替斜杠(/)或下划线(_)

Man*_*ngh 5 php routes codeigniter

我正在使用Codeigniter 3.x,使用routes.php我想创建动态路由,例如我有一个类名Class1.

我想要输出网址

mysite.com/Class1-Student-Search

但是使用连字符( - )不起作用

如果我放斜杠(/),它可以工作,

$route['(:any)/Student-Search']  = "search";
Run Code Online (Sandbox Code Playgroud)

它返回

mysite.com/Class1/Student-Search

并使用下划线(_)也可以工作.

$route['(:any)_Student-Search']  = "search";
Run Code Online (Sandbox Code Playgroud)

回报

mysite.com/Class1_Student-Search

但我想使用连字符( - ),如果我把它,它将转到404错误页面,我使用这四个解决方案,但不适合我.

$route['(:any)-Student-Search']  = "search";
$route['([a-zA-Z]+)-Student-Search']  = "search";
$route['([a-zA-Z-0-9]+)-Student-Search']  = "search";
$route['(.*)-Student-Search']  = "search";
Run Code Online (Sandbox Code Playgroud)

如果我硬编码路线中的值

$route['Class1-Student-Search']  = "search";
Run Code Online (Sandbox Code Playgroud)

然后它也工作

Yas*_*mad 2

您试图创建一个动态路由,这在Codeigniter中是不可能的,如果您看到以下 Codeigniter 流程​​图,您就会明白我的意思。

在此输入图像描述

你也可以在codeigniter官方网站上看到这个图表

当您尝试重定向或调用某个网址时,它的工作原理如下

在此输入图像描述

每个请求首先都会路由到那里,因为你无法使其动态化

  • Codeigniter 官方网站现在是 http://www.codeigniter.com,您现在可以在这里找到这两个文档 http://www.codeigniter.com/docs Ellislab 不再处理 CI 了。但由于某种原因,他们仍然有联系。 (2认同)