Назад | Перейти на главную страницу

Как условно обработать неопределенные переменные SSI с помощью Apache?

Я хочу включить заголовок в кучу страниц, например:

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-->)… Но вроде ничего не работает.

Похоже, это было бы довольно распространенным требованием. У кого-нибудь есть ссылка на рабочее решение?

Для Apache 2.4 выражения изменились:

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

ОК, решил сам. Для справки других:

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

- это правильный синтаксис. Имеет смысл, что вам не нужно проверять «(нет)», поскольку неопределенное текстовое значение можно настроить; Я просто не понял, что произошло после проверки значения, не раньше.

Я успешно использовал это:

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