Я хочу переписать красивые 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.