Используйте дефис (-) вместо косой черты (/) или подчеркивания (_) в маршрутах

Я использую Codeigniter 3.x, Using routes.php Я хочу создать динамические маршруты, например, у меня есть класс Class1 .

Мне нужен выходной URL

mysite.com/Class1-Student-Search

Но использование дефиса (-) не работает

Если я поставлю косую черту (/), она работает,

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

он возвращается

mysite.com/Class1/Student-Search

и использование подчеркивания (_) также работает.

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

возвращается

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

И если я жестко задаю значение в маршруте

 $route['Class1-Student-Search'] = "search"; 

Затем он также работает

Вы пытаетесь создать динамические маршруты, которые невозможны в кодеигнитре, если вы видите следующую блок-схему кодаигнитора, вы понимаете, что я имею в виду.

введите описание изображения здесь

также вы можете увидеть эту диаграмму на официальном сайте codeigniter

когда вы пытаетесь перенаправить или вызвать какой-то URL-адрес, это работает так

введите описание изображения здесь

Каждый запрос сначала отправляется туда, потому что вы не можете сделать его динамичным

Вот мое решение, оно работает для меня, делайте так.

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

то в вашей ссылке, надеюсь, на ваш взгляд, href ссылку, как это.

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

Дело в том, что вы не только должны делать свои маршруты, но и суффикс в своей ссылке href.