Назад | Перейти на главную страницу

Может ли LocationMatch Regex соответствовать части строки запроса?

Я пытаюсь использовать регулярное выражение 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, вряд ли есть что сказать .