Автоматическая замена url на правильный

81
24 апреля 2021, 08:00

У меня например сейчас URL имеет такой вид 1-perwaja_nowost.html и отображается новость с id 1, а если URL сделать 2-perwaja_nowost.html то отображается новость с id 2, как сделать что бы при вводе id 2 URL принимал вид 2-vtoraja_novost.html?

Answer 1

Предлагаю сделать так:

  1. Храните URL новости (весь сегмент, н-р, "2-vtoraja_novost") в БД (в таблице новостей или в какой-то общей таблице SEO)
  2. При сохранении новости формируйте для неё этот URL, например, из названия: $data['url'] = $id . '-' . translit($data['name']); Вместо названия можете подставлять какую-то другую строку. Готовые функции для транслитерации легко нагуглить, например, https://htmlweb.ru/php/example/translit.php
  3. В роутинге пропишите что-то типа $route['novosti/(:any)'] = 'news/show/$1';, где news - это контроллер новостей, а show - метод, который показывает новость.
  4. В методе function show($url){} получайте из БД новость по $url, а не id. Если запись не найдена, показывайте страницу 404.
  5. Если вы хотите, чтобы с "2-perwaja_nowost.html" был прям редирект на "2-vtoraja_novost.html", тогда в методе show из url вычлените id новости, получите по нему запись новости и сделайте redirect('url новости с id=2');.
READ ALSO
Wordpress навигационное меню

Wordpress навигационное меню

столкнулся с такой проблемой, что у меня неправильно отображается мое менюСкорей всего из-за стилей

109
Вывести сумму прописью на Русском языке

Вывести сумму прописью на Русском языке

В товарной накладной необходимо добавить сумму прописьюПробую так:

93
Как программно создавать id для элемента?

Как программно создавать id для элемента?

У меня есть цикл, который выводит слайды (библиотека owl-carousel2) с информацией по врачамИ для каждого слайда (класс doctors_slider__item) мне надо создать...

94