Переписать сегменты пути с парами значений имени в параметры запроса - PullRequest
0 голосов
/ 29 марта 2020

Я хочу переписать красивые URL-адреса для параметра запроса в моем файле .htaccess, используя regex.

Так что:

https://www.example.com/s/file/name1/value1/name2/value2/name3/value3

переписывается в:

https://www.example.com?file.htm?name1=value1&name2=value2&name3=value3

Требуется обработать номера переменных значений пары имен. Он будет включать как минимум одну пару имя-значение. Например, он должен работать с https://www.example.com/s/file/name1/value1 и https://www.example.com/s/file/name1/value1/name2/value2

s в https://www.example.com/s/file/name1/value1/name2/value2/name3/value3 указывает, что правило перезаписи должно сработать: все остальные URL должны быть оставлены в покое. Значение file - это имя файла htm, поэтому оно может иметь разные значения.

В regex101.com Я пробовал:

  • pattern : \/([^\/]+)(\/)([^\/]+)
  • замена: $1=$3&
  • В строке: /s/new/v/123/c/42
  • И он возвращает: s=new&v=123&c=42&

Но он должен вернуть: new.htm?v=123&c=42

Так что я успешно заставил его работать с переменным числом пар имя-значение. Но я просто не могу понять, как заставить его сначала пройти за s и new, а затем динамически заменить пары имя-значение.

Я не включил https://www.example.com/ в regex101, потому что в .htaccess файл, исходный домен предполагается.

Я нашел этот метод , но, похоже, он работает с фиксированным количеством пар значений.

Я также рассмотрел этот пост , который содержит отличную информацию, но не решает эту конкретную проблему c.

...