Как удалить некоторые части в URL codeigniter route htaccess

Допустим, у меня есть эти URL-адреса на моем веб-сайте.

http://www.example.com/locations

http://www.example.com/locations/Сидней

http://www.example.com/locations/брисбен

http://www.example.com/locations/перт

http://www.example.com/services/

http://www.example.com/services/cars

http://www.example.com/services/truck

http://www.example.com/services/phone

http://www.example.com/blog

http://www.example.com/blog/display/blog-title

http://www.example.com/blog/display/blog-title2

http://www.example.com/blog/display/blog-title3

http://www.example.com/blog/display/blog-title4

я хочу, чтобы URL-адреса были такими

http://www.example.com/locations

http://www.example.com/sydney

http://www.example.com/brisbane

http://www.example.com/perth

http://www.example.com/services/

http://www.example.com/cars

http://www.example.com/грузовик

http://www.example.com/phone

http://www.example.com/blog

http://www.example.com/название блога

http://www.example.com/blog-title2

http://www.example.com/blog-title3

http://www.example.com/blog-title4

как добиться этого в codeigniter??

Я пробовал ниже код:

$route[''] = 'blog/index';
$route['(:num)'] = 'blog/index/$1';
$route['(:any)'] = 'blog/display/$1';
$route['home/(:any)'] = 'blog/display/$1';

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

поэтому я попытался ответить @ACD, он дал 2 ошибки 1. Неопределенное свойство: CI_Router::$load 2. Вызов библиотеки функций-членов() при нулевом значении

поэтому я сделал некоторые изменения, как это

$req = $this->uri->segment(1);
require_once ( BASEPATH. 'database/DB.php');
$db =& DB();
if ($db->get_where('home_inner_tbl', array('page_url' => $req))) {
    $route['(:any)'] = 'home/display/$1';
} elseif ($db->get_where('blog_tbl', array('page_url' => $req))) {
    $route['(:any)'] = 'blog/blog_display/$1';
} elseif ($db->get_where('towing_services_tbl', array('page_url' => $req))) { 
$route['(:any)'] = 'towing-services/display/$1';
} elseif ($db->get_where('special_services_tbl', array('page_url' => $req))) {
$route['(:any)'] = 'cash-for-cars/display/$1';
} elseif ($db->get_where('locations_tbl', array('page_url' => $req))) {
$route['(:any)'] = 'locations/display/$1';
}

С этим кодом он не выдал ошибку, а только первую строку оператора if, которая работает, а именно $route['(:any)'] = 'home/display/$1'; другие ссылки, такие как locatins, услуги буксировки, блог, наличные за автомобили, не работают.

Что-то не так с оператором if? потому что похоже, что этот ответ должен быть правильным.

Кстати, мой контроллер выглядит так

class Home extends CI_Controller
{

public function index() {
// some code in here
}
public function display($page_url) {
// some code in here
}
}

Тот же самый контроллер отправляется в другие места (местоположения, блог, буксировка_сервисов и т. д.)

как видите, я вызываю $page_url из базы данных.

Кто-нибудь может помочь мне с этим?? Спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
65
1

Ответы 1

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

$req = $this->uri->segment(1);
if ($this->db->get_where('locations_table', array('name' => $req))) {
    $route['(:any)'] = 'locations/$1';
} else if ($this->db->get_where('blogs_table', array('name' => $req))) {
    $route['(:any)'] = 'blog/display/$1';
} else if ($this->db->get_where('services_table', array('name' => $req))) {
    $route['(:any)'] = 'services/$1';
}

К вашему сведению: это невозможно сделать с помощью htaccess, если нет определенного формата для каждой категории (пример: для местоположения — loc_singapore, loc_usa; для услуг — svc_someservice и т. д.)

Привет, я попробовал ваш код, он дает мне 2 ошибки 1. Неопределенное свойство: CI_Router::$load 2. Вызов библиотеки функций-членов () на null Я написал ваш код в route.php, это правильное место для его записи ? кажется, он не понимает части $this->db->get_where. Итак, я попытался $this->load->library('database'); но тоже не работал. Любое предложение??. Кажется, вы очень хорошо поняли мой вопрос, не могли бы вы мне помочь, пожалуйста?

Ace 26.01.2019 08:37

Другие вопросы по теме