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

时间:2016-05-23 08:02:19

标签: php codeigniter routes

我使用Codeigniter 3.x,使用 routes.php 我想创建动态路由,例如我有一个类名<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="showCont1"> <div id="showmore1"> </div> </div> <div id="showCont2"> <div id="showmore2"> </div> </div> <div id="showCont3"> <div id="showmore3"> </div> </div>

我想要输出网址

  

mysite.com/Class1-Student-Search

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

如果我放斜杠(/),它就可以了,

Class1

它返回

  

mysite.com/Class1/Student-Search

并使用下划线(_)也可以。

$route['(:any)/Student-Search']  = "search";

返回

  

mysite.com/Class1_Student-Search

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

$route['(:any)_Student-Search']  = "search";

如果我对路线中的值进行硬编码

$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";

然后它也在工作

2 个答案:

答案 0 :(得分:2)

如果你看到codeigniter的以下流程图你理解我的意思,你试图创建一个在 codeigniter 中无法实现的动态路由。

enter image description here

您也可以在codeigniter官方website

中看到此图表

当您尝试重定向或调用某个网址时,它会像这样工作

enter image description here

每个请求首先在那里进行路由,因为您无法使其成为动态

答案 1 :(得分:-1)

这是我的解决方案,它适用于我,喜欢这样。

$route['(:any)-Student-Search']  = "search";

然后在你的链接按钮中,希望在你的视图中,href这样的链接。

href="/<?php echo $row->classname; ?>-Student-Search"

关键在于,您不仅要制作路线,还要在href链接中以相同方式添加后缀。