我们正在使用mod_auth_openid 插件为我们网站的一部分提供 OpenID 支持。它工作得很好,但我们遇到了“这样做,除非什么时候”的条件之一,我不确定我错过了哪里。
有一些 URI 是我们不希望应用的。从表面上看,这很简单。
<Directory "/opt/homeapp/web">
AuthType openid-connect
SetEnvIf Request_URI "^/(callbacks.php.*)$" allow
require claim hd:example.com
require env allow
require valid-user
</Directory>
这适用于命中callbacks.php
文件的内容以及任何其他实际文件。
我的问题出现的地方是尝试匹配 Symfony 路由。如果传入的请求是 to /combobulator/newForm
,它似乎Request_URI
应该等于/combobulator/newForm
。但是,事实并非如此。
SetEnvIf Request_URI "^/combobulator/(.*)" allow
SetEnvIf Request_URI "combobulator/(.*)$" allow
SetEnvIf Request_URI "combobulator" allow
SetEnvIf Request_URI "(combobulator)" allow
所有这些都不做事。
您如何将路线与 匹配SetEnvIf
,或者这甚至可能吗?
在对数据流的工作方式进行了一些调查后,我实现了一些测试工具来查看
Request_URI
在这个执行阶段是什么。然后使用其中使用的自定义
LogFormat
语句%{check_uri}e
,我设法证明Request_URI
在这个阶段对于大多数路线是index.php
.今天,用于文件的 SetEnvIf 方法不适用于 routes。需要使用其他一些方法。
这为我解决了 wp-json api 路由的问题
Require env REDIRECT_noauth
排除受保护的子 url 在 Apache 2.4 上不起作用?