Соответствие перенаправления в конце URL, игнорируя подстроку - PullRequest
0 голосов
/ 30 августа 2018

Я сейчас пытаюсь перенаправить со старого сайта на новый. Домен изменился и подпуть изменился, но конец всегда один и тот же, поэтому я пытаюсь создать регулярное выражение, которое будет игнорировать подпуть и совпадать только с окончанием, независимо от того, какая комбинация может быть.

Пример:

http://shop.kmsport.dk/team-sport/bolde/fodbolde

https://kmsport.dk/collections/fodbolde

http://shop.kmsport.dk/fodbolde/fodbold-udstryr/anforerbind-325

Все эти 3 URL содержат слово "fodbolde", но я хочу сопоставить только первые два, так как они оба заканчиваются на "/ fodbolde", и в процессе игнорирует подпуть.

До сих пор я был в состоянии сопоставить концы с этим:

\/([a-zA-Z]*)*+$

Как мне создать что-то для учета различных подпутей?

P.s Это огромный спортивный магазин, поэтому было бы неплохо не создавать уникальный редирект для каждой возможной комбинации -.-

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Ваше текущее регулярное выражение не учитывает /fodbolde. Если это должно быть в конце, вы можете использовать $ для подтверждения конца строки как /fodbolde$

Одной из возможностей может быть совпадение с началом строки ^https?:// и, при необходимости, совпадение с магазином. (?:shop\.)? с последующим kmsport\.sk/

Затем используйте повторяющийся шаблон, совпадающий с косой чертой, за которым следует косая черта, равная нулю или более раз (?:[^/]+/)*, а в конце строки соответствует fodbolde fodbolde$

^https?://(?:shop\.)?kmsport\.dk/(?:[^/]+/)*fodbolde$

0 голосов
/ 30 августа 2018

Если вас интересует только последняя часть, просто наберите

url.rsplit('/', 1)[-1]
...