Серверная часть 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
И, похоже, это решило проблему. Если кто-нибудь знает лучший способ справиться с этим, пожалуйста, оставьте комментарий, и я попробую.