Пренапишете URL адреса, ако потребителят се опита да получи достъп до несъществуващ контролер.
Пример: - Ако потребителят се опита да получи достъп http://example.com/project/anyvalue
, В моята програма няма контролер с име "anyvalue". В тази ситуация искам да пренасоча
http://example.com/project/profile/anyvalue
Как е възможно това, използвайки маршрутизация в codeigniter?
Отговори:
1 за отговор № 1Използвайте маршрут по подразбиране, за да пренасочите заявките към определена страница, ако липсва контролер
Можете да намерите местоположението на маршрутите в
/application/admin/config/routes.php
$route["default_controller"] = "welcome";
Също така използвайте следното в случай, че страницата не е намерена
$route["404_override"] = "default_page";
1 за отговор № 2
- Добавете маршрути към всички съществуващи контролери в "/ project / ..."
- Добавете маршрут, който съответства на всички пътища в „/ project“
Пример:
/* Currently available controllers under "/project/" */
$route["project/profile"] = "project/profile";
$route["project/add"] = "project/add";
$route["project/edit"] = "project/edit";
/* Catch all others under "/project/" */
$route["project/(:any)"] = "project/profile/$1";
/* if controller class name is Profile and function name is index */
$route["project/(:any)"] = "project/profile/index/$1";
0 за отговор № 3
Това, което искате, е Vanity URLs, тук можете да намерите ръководство за извършване на този код:
http://philpalmieri.com/2010/04/personalized-user-vanity-urls-in-codeigniter/
По същество добавяте това в своя файл с маршрути:
$handle = opendir(APPPATH."/modules");
while (false !== ($file = readdir($handle))) {
if(is_dir(APPPATH."/modules/".$file)){
$route[$file] = $file;
$route[$file."/(.*)"] = $file."/$1";
}
}
/*Your custom routes here*/
/*Wrap up, anything that isnt accounted for pushes to the alias check*/
$route["([a-z-_/]+)"] = "aliases/check/$1";