как удалить некоторые части в коде URLigniter маршрутов htaccess - PullRequest
0 голосов
/ 25 января 2019

Допустим, у меня есть эти URL на моем сайте

http://www.example.com/locations

http://www.example.com/locations/sydney

http://www.example.com/locations/brisbane

http://www.example.com/locations/perth

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/truck

http://www.example.com/phone

http://www.example.com/blog

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

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. Вызов библиотеки функций-членов () со значением NULL

поэтому я сделал такую ​​модификацию, как это

$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, услуги буксировки, блог, cash-for-cars не работают.

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

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

class Home extends CI_Controller
{

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

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

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

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

1 Ответ

0 голосов
/ 25 января 2019

Вы можете сначала отфильтровать, какой маршрут выбрать, прежде чем создавать маршрут, если запрос существует, при условии, что 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 и т. Д.)

...