在 Windows 2012 上运行 Apache 2.4.38。我的 httpd.conf 中有以下配置
<IfModule mod_headers.c>
<If "%{THE_REQUEST} =~ m#.*smartbank.*#">
Header set Access-Control-Allow-Credentials: "true"
Header set Access-Control-Allow-Methods: "GET"
Header set Access-Control-Allow-Origin: "https://bank.test.mycorp.no"
Header set Vary: Origin
</If>
<ElseIf "%{THE_REQUEST} =~ m#.*startside.*#">
Header set Access-Control-Allow-Credentials: "true"
Header set Access-Control-Allow-Methods: "GET"
Header set Access-Control-Allow-Origin: "https://testserver1.mycorp.no"
Header set Vary: Origin
</ElseIf>
<ElseIf "%{HTTP_HOST} == 'localhost:8080'">
Header set Access-Control-Allow-Credentials: "true"
Header set Access-Control-Allow-Methods: "GET"
Header set Access-Control-Allow-Origin: "http://localhost:8080"
Header set Vary: Origin
</ElseIf>
由于某种原因,第一个 elseif 不会启动。是否可以以任何方式调试此类语句,例如在 if else 之前、之中和之后创建日志语句?
可能很难在日志中查找与 if 相关的行。 Apache 允许每个模块,我们需要它来查找属于哪个模块指令。由于在核心文档中列出,我们可以通过设置
看到一些东西LogLevel info core:trace6
在虚拟主机内。
使用 /var/log/apache2/error.log 中的 Apache 2.4.52-ubuntu,我可以看到我的 ifs 不起作用:')
[Thu Jul 04 04:33:32.598587 2024] [core:trace4] [pid 35565:tid 135467400762944] util_expr_eval.c(859): [remote 51.16.158.30:58068] Evaluation of expression from /etc/apache2/sites-available/081-screentranslate_app-include-23words.conf:6 gave: 0
我可能会迟到,但由于我是通过搜索来到这里的,我希望它可以帮助别人。