Я пытаюсь использовать регулярное выражение LocationMatch, чтобы попытаться сопоставить, когда определенный файл загружается или загружается через приложение. Приложение использует строки запроса в URL-адресе.
Запрос:
"POST /uploads.js?attachment_id=2&filename=issues%20(12).csv&content_type=application%2Fvnd.ms-excel HTTP / 1.1" 200 336
Я заметил, что Regex, похоже, не может видеть символы строки запроса, которые идут после "?" в URL.
Это правильно? и почему?
Есть ли способ сопоставить Regex с тем, что находится в части строки запроса?
На самом деле это возможно, так как Apache 2.4 (или меньше) использует следующий тег:
<LocationMatch "/test/upload.js">
<If "%{QUERY_STRING} =~ /query=test/">
..
'Your directives'
..
</If>
</LocationMatch>
В этой конфигурации директивы будут применяться только в том случае, если URL находится в форме «/test/upload.js» и содержит запрос «query = test».
Нет, LocationMatch не соответствует query_string.
Чтобы дополнить ответ, вы можете использовать RewriteCond из mod_rewrite, чтобы сопоставить любую строку запроса, а затем перенаправить ее внутренне или внешне туда, где вы хотите, поскольку вы не указали цель, кроме сопоставления query_string, вряд ли есть что сказать .