如何使用 Apache 有条件地处理未定义的 SSI 变量?

如何使用 Apache 有条件地处理未定义的 SSI 变量?

我想在一组页面中包含一个页眉,如下所示:

header.html

<html>
  <head>
    <title>My site</title>
  </head>

为了启用特定于页面的标题,我尝试使用在每个页面中设置的 SSI 变量:

page1.html

<!--#set var="TITLE" value="first page" -->
<!--#include file="header.html" -->

然后我修改一下header.html以使用该变量:

<title>My site - <!--#echo var="TITLE" --></title>

这可以正常工作,但是,当然,它有一个不良影响,即,如果TITLE没有设置,则结果为:

<title>My site - (none)</title>

因此,我尝试了各种尝试,根据该变量是否存在(例如)来有条件地echo调整该变量……但似乎没有任何效果。none<!--#if expr="TITLE != \(none\)" --> ... <!--#endif-->

看起来这是一个相当常见的要求。有人能提供可行的解决方案吗?

答案1

对于 Apache 2.4表达式已改变:

<!--#if expr="-z v('CONTENT_LANGUAGE')"-->
<!--#set var="CONTENT_LANGUAGE" value="en"-->
<!--#endif-->

答案2

我已经成功使用过它:

<!--#if expr="! $CONTENT_LANGUAGE" -->
<!--#set var="CONTENT_LANGUAGE" value="en" -->
<!--#endif -->

答案3

好的,我自己解决了。供其他人参考:

<!--#if expr="${TITLE}!=''" -->

是正确的语法。由于可以配置未定义的文本值,因此您不必检查“(none)”,这是有道理的;我只是没有意识到这种情况发生在检查值之后,而不是之前。

相关内容