我有位置匹配正则表达式
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