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

Как проверить, работает ли регулярное выражение LocationMatch?

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

ScriptAlias /script /var/www/somescript.bash
Action some-handler /script virtual
<LocationMatch "/(?:\w+:)?\/\/[^\/]+([^?#]+)/">
    SetHandler some-handler
</LocationMatch>

Теперь, когда протестируем это регулярное выражение https://regex101.com/r/lO0aV1/1 вы можете видеть, что местоположение совпадает, но somescript.bash никогда не выполняется.

Кстати, mod_actions.

В журнале ошибок ничего не вижу. В журнале доступа я получил 404.

Как я могу проверить, что это регулярное выражение работает? Можно ли это записать?

Создайте CustomLog, например:

CustomLog "/var/log/httpd/mylog.log" "%h %l %u %t \"%r\" %>s %b what:%{INDICATOR_VAR}e"

и используйте SetEnv для установки INDICATOR_VAR:

<LocationMatch ...>
    SetEnv INDICATOR_VAR "OK"
</LocationMatch>

Самый простой способ проверить, что LocationMatch работает, - это поместить в него простую директиву mod_headers и выгрузить заголовки ответа на тестовом клиенте. например Header set X-DEBUG foo