Как Regex находит совпадения и использует только некоторые из них? - PullRequest
0 голосов
/ 04 марта 2020

Обновлено: моя цель - перенаправить URL. Когда кто-то посещает /taxonomy/slug/id, человек должен перенаправить на /slug.

  • таксономия будет строка, число, и любой символ в качестве стандартного URL-адреса
  • будет таким же.
  • id - это только цифры.

Единственный исключительный случай: когда часть слага является 'страницей', она не должна куда-то перенаправляться. Я использую PHP. Надеюсь, это прояснит ситуацию.


Я пытаюсь изменить структуру постоянных ссылок, но мне нужно, чтобы ссылки на Google были в безопасности. Это не точный вопрос WordPress.

Текущая структура: / taxonomy / slug / id (и некоторые URL-параметры необязательно)

Цель: / slug / (и некоторые URL-параметры)

Мой первый подход - установить регулярное выражение как (. ) / (. ) / ([0-9] +) /? ((. *))? и просто используйте $ 2 $ 4

Тогда возникла проблема с нумерацией страниц. Когда я go перехожу на 1-ю страницу архива, он куда-то перенаправляет меня. FYI. нумерация страниц следует этой структуре; / taxonomy / page / 2

/ taxonomy / page / 2 следует go на 2-й странице. / taxonomy / pagehelloworld / 2 должен go для pagehelloworld. / taxonomy / helloworldpage / 2 должен go, чтобы страница не была архивирована.

Мой второй подход заключался в использовании регулярного выражения (. ) / ((?! страница).) / ([0 -9] +) /? ((. *?)) Затем все URL-адреса, включающие «страницу» в строку, такие как «page2» и «123page», были проигнорированы.

Поэтому я хочу знать, как это можно решить. Другое дело, хочу решить другое дело. Когда URL-адрес «123page», регулярное выражение должно вытягивать «123page», а не только «123».

Может ли кто-нибудь иметь хорошее решение? Заранее спасибо.

...