Я переношу конфигурацию на новую CMS, и на текущей странице есть URL-адреса со структурой "/ view-article / ID", некоторые сокращения ссылок добавили параметры в конец как "/ view-article / ID / {RAMDON | undefined | другие} ".
Я хочу перенаправить этот URL-адрес на новую структуру «/ id / ID», но я провожу тесты на онлайн-издателях регулярных выражений PCRE, прежде чем запускать его в производство, и я не могу создать регулярное выражение, которое соответствовало бы URL-адресу CMS и к которой добавлено сокращение (отбрасывая параметры, которые добавляют).
Мои настройки в следующем:
location ~* ^/view-article {
#rewrite ^/view-article/(.*)(?:\/.+) $scheme://$host/id/$1 permanent;
rewrite ^/view-article/(.*) $scheme://$host/id/$1 permanent;
}
Примеры текущего url и должны быть в новой cms:
/view-article/45356 -> /id/45356
/view-article/4a57f -> /id/4a57f
/view-article/4a57f/undefined -> /id/4a57f
/view-article/4a57f/ramdon -> /id/4a57f
/view-article/4a57f/88484 -> /id/4a57f
/view-article/aabb3/jddt65 -> /id/aabb3
Вы думаете, что это правильно? Как заставить его работать? Спасибо
Вы не хотите снимать все, только текст от идентификатора до следующей косой черты, если таковой имеется. Так (.*)
не будет делать то, что вы хотите, поскольку просто захватывает все.
Лучше захватить до следующей косой черты (если она есть):
rewrite ^/view-article/([^/]+) /id/$1 permanent;
(Также нет причин самостоятельно восстанавливать весь URL-адрес, если будет достаточно относительного URL-адреса. Также нет причин помещать его в специальный location
, так что не беспокойтесь.)