SSI / mod_include:新的ap_expr语法无法正常工作

时间:2018-03-11 18:28:17

标签: apache ssi mod-include

我的网站使用SSI(服务器端包含)来检查条件(使用#if expr)并根据条件是真还是假来返回不同的HTML代码。这曾经工作多年,直到最近,我的网站开始显示错误[an error occurred while processing this directive]。我发现the expr syntax changed in newer versions of Apache httpd,所以我假设我的托管服务提供商最近升级了Apache httpd并导致旧语法中断。 Apache httpd现在版本为2.4.29。

我设法通过将SSILegacyExprParser on添加到我的.htaccess文件来暂时解决问题,以恢复旧语法(感谢this question)。但我想找到一个使用新语法的永久解决方案。

以下是与SSILegacyExprParser on一起使用的旧语法SSI代码:

<!--#if expr="${thisDoc} = /impressum\.shtml/" -->
<li id="current">
<!--#else -->
<li>
<!--#endif -->

(之前已设置变量thisDoc。)

以下是使用新ap_expr语法的SSI代码。它再次显示[an error occurred while processing this directive]。编写此代码时,我在http://httpd.apache.org/docs/current/expr.html处遵循了文档:

<!--#if expr="%{thisDoc} =~ /impressum\.shtml/" -->
<li id="current">
<!--#else -->
<li>
<!--#endif -->

我尝试过以各种方式修改语法,例如避免使用正则表达式匹配并使用精确的字符串比较,但这也不起作用。我无法在新语法中使用单个表达式。

为什么新语法不起作用?

0 个答案:

没有答案