Серверная часть Apache SSI включает throwing [произошла ошибка при обработке этой директивы] при использовании условного <! - # if expr =

Я обновляю очень старый статический сайт и пытаюсь сделать динамический рендеринг на основе некоторых SSI-интерфейсов Apache, с которыми я не очень хорошо знаком. Я сталкиваюсь с проблемой моего условного возврата операторов:

[an error occurred while processing this directive]

В качестве простого примера, в моем файле /index.shtml я имею:

<!--#set var="VAR_header_type" value="home" -->
<!--#set var="foo" value="bar" -->
<!--#include virtual="/includes/header.shtml" -->

В моем /include/header.shtml у меня есть:

<h4><!--#echo var="DATE_LOCAL" --></h4>
<h4><!--#echo var="VAR_header_type" --></h4>
<h4><!--#echo var="foo" --></h4>

<!--#if expr="$VAR_header_type == 'home'" -->
    <p style="color:red;">home</p>
<!--#endif -->

<!--#if expr="$foo = bar" -->
    <p style="color:red;">foo = bar</p>
<!--#endif --> 

Все h4s выводят свои данные в порядке, вот скриншот ( https://imgur.com/a/Zun7D). Вы также увидите [ошибки, возникшие при обработке этой директивы] ошибки из моих двух условных выражений.

Я использую WAMP с Apache 2.4.9, и у меня включен include_module.

Мой файл .htaccess выглядит следующим образом (я начал с первой строки, затем добавил три строки под ним):

Options FollowSymLinks MultiViews Includes

Options +Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

Я также пытался сделать виртуальный путь #include относительным, а не абсолютным, но это не имело никакого эффекта.

Кто-нибудь может посоветовать, как заставить работать мои условные выражения?

ОБНОВЛЕНИЕ: Похоже, я понял (через 15 минут после публикации, должен любить это). Я добавил следующее в мой файл.htaccess:

SSILegacyExprParser on

И, похоже, это решило проблему. Если кто-нибудь знает лучший способ справиться с этим, пожалуйста, оставьте комментарий, и я попробую.

0 ответов

Другие вопросы по тегам