Регулярное выражение для имени файла и строки запроса из URL в 2 группах

#regex #mod-rewrite

#регулярное выражение #переписать мод

Вопрос:

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

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

 String is http://www.a.com/b.css?v=1234
 

Я знаю, что могу получить b.css?v=1234 с помощью регулярного выражения

 ([^/] $)
 

То, что я ищу, сгруппировано так, чтобы %1 было b.css, а %2 — 1234. Любая помощь приветствуется. Спасибо.

Ответ №1:

На основе предоставленного вами URL-адреса:

 http://www.a.com/b.css?v=1234
 

Вы можете использовать:

 /(w .w{3})?v=(d )
 

Визуализация регулярных выражений

Демонстрация Debuggex

Для java не забудьте экранировать обратную косую черту в:

 /(\w \.\w{3})\?v=(\d )
 

Надеюсь помочь

Ответ №2:

Вам нужно как Условие, так и одно или несколько правил.

Один из нескольких способов сделать это, протестированный на Apache 2.2 и 2.4:

 RewriteCond %{QUERY_STRING} v=(d )
RewriteRule ^([^/]*) DoSomethingWithFile_$1_AndDigits_%1?
 
  • Входной URL-адрес: www.yoursite.com/b.css?v=1234
  • %1 содержит 1234
  • $1 содержит b.css
  • Переписанный URL-адрес: www.yoursite.com/DoSomethingWithFile_b.css_AndDigits_1234