/ / Rewrite URL, ако контролерът не съществува в codeigniter - php, codeigniter, url-rewriting, routing

Преинсталирайте URL адреса, ако контролерът не съществува в кодификатора - php, codeigniter, пренаписване на URL адреси, маршрутизиране

Пренапишете 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
  1. Добавете маршрути към всички съществуващи контролери в "/ project / ..."
  2. Добавете маршрут, който съответства на всички пътища в „/ 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";