gpt4 book ai didi

apache2 - 表达式如何在 apache 2.4 中工作?

转载 作者:行者123 更新时间:2023-12-04 21:19:43 28 4
gpt4 key购买 nike

在我将服务器从版本 2.2 升级到 2.4 后,Server Side Include 中的一些表达式不再起作用,给我一系列错误:

AH01337: Could not parse expr "$SERVER_NAME = abc" in /var/www/err/ft.html.var: Parse error near '$'
AH01337: Could not parse expr "! $REDIRECT_STATUS" in /var/www/err/tp.html: Parse error near '$'
AH01337: Could not parse expr "$HTTP_HOST = /^([a-z]{2}\.)abc\.com/ && $SERVER_NAME = abc\.com" in /var/www/err/tp.html: Parse error near '$'



我知道这是由于一些 ongoing effort只对所有配置指令使用一个称为 ap_expr 的变体。但是,在阅读文档后,我仍然不知道如何转换我的一些旧代码以反射(reflect)此更改:
<!--#if expr="! $REDIRECT_STATUS" -->
<!--#set var="REDIRECT_STATUS" value="404" -->
<!--#endif -->
<!--#if expr="$HTTP_HOST = /^([a-z]{2}\.)abc\.com/ && $SERVER_NAME = abc\.com" -->
<!--#set var="subdomain" value="$1" -->
<!--#else -->
<!--#set var="subdomain" value="" -->
<!--#endif -->

如果有人能指出如何更改上述内容以使我开始,我将不胜感激。谢谢!

最佳答案

我希望如果你对新语法感兴趣,你最终会得到这样的结果:

<!--#if expr="-z %{REDIRECT_STATUS}" -->
<!--#set var="REDIRECT_STATUS" value="404" -->
<!--#endif -->
<!--#if expr="v('HTTP_HOST') =~ /^([a-z]{2}[.])abc[.]com/
&& v('SERVER_NAME') == 'abc.com'" -->
<!--#set var="subdomain" value="$1" -->
<!--#else -->
<!--#set var="subdomain" value="" -->
<!--#endif -->

我不确定 1 美元,因为我在昨晚刚刚转换的内容中没有这样的用途(有些人认为它可能只能在捕获它的同一个 expr 中使用)。我发现正则表达式的一些问题没有按预期工作,例如,像这样的表达式来确定我是否正在查看当前目录或子文档的工作量。最后一行确实与以“/”结尾的 URI 匹配,但我花了几个小时发现 %{REQUEST_URI} 不起作用,只有 v('REQUEST_URI') 形式(不知何故,我希望找到相反的结果)为了某件事)。
<!--#if expr="((v('REQUEST_URI') =~ m_/index.shtml_)
|| (v('REQUEST_URI') =~ m_/index.html_)
|| (v('REQUEST_URI') =~ m_/index.cgi_)
|| (v('REQUEST_URI') =~ m_/$_))" -->

关于apache2 - 表达式如何在 apache 2.4 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14878076/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com