Год назад начал разработку сайта, при этом выбрал технологию построения url страниц таким образом, что к каждому компоненту адреса добавляется id из БД. Например,
mysite/news-2/some-news-12
mysite/articles-3/some-article-25
По такой же технологии реализован и роутер движка.
Однако сейчас я понял, что сильно ошибся в выборе технологии (так как такой вариант предпочтителен исключительно для веб-ресурсов, содержащих неограниченное количество обновляемых разделов/страниц).
Теперь я хочу перейти к нормальному отображению url:
было mysite/news-2/some-news-12
станет mysite/news/some-news
Переписать роутер не проблема, но за год страницы хорошо проиндексировались, и я вынужден дополнительно реализовать грамотную переадресацию со старых адресов на новые. В данном случае необходимо использовать регулярные выражения, поэтому принято решение использовать php.
Реализацию вижу в таком вид (прописывается в начале роутера):
if ( проверить регуляркой СТАРЫЙ_АДРЕС ){
header("HTTP/1.1 301 Moved Permanently");
header("Location: НОВЫЙ_АДРЕС");
exit();
}
также встречал и такую инструкцию:
…..
header("Location: НОВЫЙ_АДРЕС",TRUE,301);
…..
Подскажите наиболее приемлемое решение для моего случая (а также по возможности само регулярное выражение – как найти и удалить выражения «-число» в конце компонентов url адреса)
Разобрался. Всё отлично работает, огромное спасибо @teran за наводку на .htaccess. Итак, достаточно одной строки в .htaccess:
RedirectMatch 301 /(.*)(\-\d+)$ //mysite.ru/$1
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Может кто-нибудь показать на конкретном примере, как использовать вебсокеты для выгрузки данных из БД и добавления этих данных в HTML структуру...
После http_build_query, я получаю что то на подобии этого (%D2%E5%F1%F2%EE%E2%EE%E5+%F1%EE%EE%E1%F9%E5%ED%E8%E5+%E2+%EB%E8%F7%), a не значение (на русском) исправить не получается
yii2-advanced, база MariaDBСделал скрипт, который подтягивает данные из 3 таблиц и сопоставляет данные так: