AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 838763
Accepted
sysadmin1138
sysadmin1138
Asked: 2017-03-17 12:19:47 +0800 CST2017-03-17 12:19:47 +0800 CST 2017-03-17 12:19:47 +0800 CST

SetEnvIf 在 PHP 路由上的行为

  • 772

我们正在使用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,或者这甚至可能吗?

php5 apache-2.4 symfony
  • 2 2 个回答
  • 928 Views

2 个回答

  • Voted
  1. Best Answer
    sysadmin1138
    2017-03-18T10:53:33+08:002017-03-18T10:53:33+08:00

    在对数据流的工作方式进行了一些调查后,我实现了一些测试工具来查看Request_URI在这个执行阶段是什么。

    <Directory "/opt/homeapp/web">
      AuthType openid-connect
      SetEnvIf Request_URI "^/(callbacks.php.*)$" allow
      SetEnvIf Request_URI "(.*)" check_uri=$1
    
      require claim hd:example.com
      require env allow
      require valid-user
    </Directory>
    

    然后使用其中使用的自定义LogFormat语句%{check_uri}e,我设法证明Request_URI在这个阶段对于大多数路线是index.php.

    今天,用于文件的 SetEnvIf 方法不适用于 routes。需要使用其他一些方法。

    • 0
  2. Christopher Stephenson
    2022-07-13T03:05:06+08:002022-07-13T03:05:06+08:00

    这为我解决了 wp-json api 路由的问题Require env REDIRECT_noauth 排除受保护的子 url 在 Apache 2.4 上不起作用?

    • -1

相关问题

  • Apache 在配置 eAccelerator 和 FastCGI 后从不运行

  • Debian 上 php5 和 php5-cli 软件包的区别

  • apache在php中与exec崩溃

  • 为什么PHP脚本的工作许可在服务器之间有所不同?

  • 从 PHP 5.1.6 升级到 5.2.9 的问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve