mywebsite.com/it/moto/
должен перенаправляться на домашнюю страницу. Поэтому я написал это в routes.php
$route['(\w{2})/(auto|moto)/(.*)'] = '$3';
$route['(\w{2})/(auto|moto)'] = $route['default_controller'];
который работает очень хорошо. Кроме того, mywebsite.com/it/moto/mercatino
маршрутов Mercatino
контроллер, который идеально подходит.
Нет, я хочу, чтобы этот mywebsite.com/it/moto/mercatino/componenti-veicolo/221/molle-originali-r6
направлялся к этой функции внутри контроллера Mercatino
public function prodotto($category, $id, $title){
}
следовательно, я написал эту строку в routes.php
$route['(mercatino|market){1}/(:any)/(:num)/(:any)'] = "mercatino/prodotto/$2/$3/$4";
Но я получаю ошибку 404. Любая идея, как это исправить?
Решенный таким образом
$route['(.*)/(mercatino|market){1}/(:any)/(:num)/(:any)'] = "mercatino/prodotto/$3/$4/$5"; //rule 1
$route['(\w{2})/(auto|moto)/(.*)'] = '$3'; //rule 2
$route['(\w{2})/(auto|moto)'] = $route['default_controller']; //rule 3
mercatino
правило mercatino
перед всеми другими правилами и добавив (.*)
mercatino
.
$route['(mercatino|market){1}/(:any)/(:num)/(:any)'] = "mercatino/prodotto/$2/$3/$4";
Сколько каталогов находится в "mercatino/prodotto/$ 2/$ 3/$ 4"? По умолчанию codeigniter, я думаю, не входит в каталог больше уровня 2.
Я имею в виду, что когда codeigniter ищет файлы, предполагается, что внутри контроллера может быть только один каталог. Итак, если у вас есть controllers/d1/file.php
вы в порядке, но если у вас есть controllers/d1/d2/file.php
он не будет работать с поведением CI по умолчанию.
Для того, чтобы сделать его работу, которую вы, возможно, придется переопределить Router class
и fetch_directory
функции или _validate_request
функция может быть.
/prodotto/
передаются в качестве параметров в функцию prodottoprodotto()
, это то, что делает codeigniter. Так, например, если у вас есть URL-адрес, такой как/dir1/dir2/dir3/..../dirn/
CI получит доступ к классуDir1
, вызовите функциюdir2
и передайте параметры/dir3/.../dirn/
в эта функция{1}
. Может быть, CI не поддерживает этот тип регулярных выражений в маршруте. Точно не уверен.