Перепишіть URL-адресу, якщо користувач намагався отримати доступ до будь-якого неіснуючого контролера.
Наприклад: - Якщо користувач намагався отримати доступ http://example.com/project/anyvalue
. У моїй програмі немає контролера з назвою "anyvalue". У цій ситуації я хочу перенаправити
http://example.com/project/profile/anyvalue
Як це можливо, використовуючи маршрутизацію в кодігінітер?
Відповіді:
1 для відповіді № 1Використовуйте маршрут за замовчуванням для перенаправлення запитів на певну сторінку, якщо контролер відсутній
Ви можете знайти місцезнаходження маршрутів у
/application/admin/config/routes.php
$route["default_controller"] = "welcome";
Також використовуйте наступне, якщо сторінка не знайдена
$route["404_override"] = "default_page";
1 для відповіді № 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
Що вам потрібно, це URL-адреси суєти, ви можете знайти керівництво по виконанню цього коду в запалювачі коду тут:
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";