![如何检查 LocationMatch 正则表达式是否有效?](https://linux22.com/image/665884/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%20LocationMatch%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%98%AF%E5%90%A6%E6%9C%89%E6%95%88%EF%BC%9F.png)
我有位置匹配正则表达式
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