如何检查 LocationMatch 正则表达式是否有效?

如何检查 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。

我如何检查此正则表达式是否有效?有什么方法可以记录下来吗?

答案1

创建一个 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>

答案2

检查 LocationMatch 是否有效的最简单方法是将一个简单的 mod_headers 指令放入其中,然后将响应标头转储到测试客户端上。例如Header set X-DEBUG foo

相关内容