Re: вложенные include virtual в SSI
Maxim Dounin
mdounin at mdounin.ru
Thu Jul 31 11:28:30 UTC 2014
Hello!
On Wed, Jul 30, 2014 at 04:35:04PM -0400, mistercx wrote:
> Приветствую всех!
>
> Только что при переносе статического проекта с Apache на Nginx столкнулся с
> пренепреятнейшей особенностью - невозможностью использования вложенных
> include virtual в SSI.
>
> Например:
>
> файл lang.shtml
> ============
> <!--#set var="company" value="Компания" -->
> <!--#set var="video" value="Видео" -->
> <!--#set var="gb" value="Гостевая книга" -->
>
> файл test.shtml
> ============
> <!--#include virtual="lang.shtml"-->
> <!--#echo var="company"-->
>
> Результат: Nginx - вместо "Компания" в браузере видим None; Apache -
> отображается "Компания"
>
> SHTML-страниц в проекте около 6000. Есть какое-либо мысли как сие
> разруливается, или смотреть назад в сторону Apache?
Надо так:
<!--#include virtual="lang.shtml" wait="yes" -->
Потому что по умолчанию nginx обрабатывает SSI-подзапросы
параллельно, и приведённом случае переменная "company"
устанавливается уже после того, как её попытались вывести.
Вообще следует иметь в виду, что SSI в Apache и в nginx'е -
местами различаются. При миграции подобных объемов кода - имеет
смысл тщательно проверять работоспособность всех используемых
конструкций. То, что умеет делать nginx, подробно описано в
документации[1], но нюансы вроде вышеназванного могут быть
неочевидны.
http://nginx.org/ru/docs/http/ngx_http_ssi_module.html#commands
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru