301 редирект с регулярным выражением

152
31 декабря 2018, 07:40

Год назад начал разработку сайта, при этом выбрал технологию построения 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 адреса)

Answer 1

Разобрался. Всё отлично работает, огромное спасибо @teran за наводку на .htaccess. Итак, достаточно одной строки в .htaccess:

RedirectMatch 301 /(.*)(\-\d+)$ //mysite.ru/$1
READ ALSO
Использование вебсокетов

Использование вебсокетов

Может кто-нибудь показать на конкретном примере, как использовать вебсокеты для выгрузки данных из БД и добавления этих данных в HTML структуру...

135
Пробема с кодировкой

Пробема с кодировкой

После 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 не значение (на русском) исправить не получается

146
Не хватает памяти для обработки запроса

Не хватает памяти для обработки запроса

yii2-advanced, база MariaDBСделал скрипт, который подтягивает данные из 3 таблиц и сопоставляет данные так:

165