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

Bob*_*ack 4 server-side-includes apache-2.2

我想在一堆页面中包含一个标题,如下所示:

header.html

<html>
  <head>
    <title>My site</title>
  </head>
Run Code Online (Sandbox Code Playgroud)

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

page1.html

<!--#set var="TITLE" value="first page" -->
<!--#include file="header.html" -->
Run Code Online (Sandbox Code Playgroud)

然后我正在修改header.html以使用该变量:

<title>My site - <!--#echo var="TITLE" --></title>
Run Code Online (Sandbox Code Playgroud)

这工作正常,但当然,它有一个不幸的影响,如果TITLE没有设置,结果是:

<title>My site - (none)</title>
Run Code Online (Sandbox Code Playgroud)

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

似乎这将是一个非常普遍的要求。有没有人参考工作解决方案?

小智 5

对于 Apache 2.4,表达式已更改:

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


Bob*_*ack 0

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

<!--#if expr="${TITLE}!=''" -->
Run Code Online (Sandbox Code Playgroud)

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