Условный SSI на основе URI - PullRequest
1 голос
/ 29 августа 2010

Я переделываю панель навигации, которая включает несколько десятков страниц моего сайта.Одно из изменений, которое я хочу внести, - это изменение содержимого, которое включено, в зависимости от страницы, на которой находится пользователь.Таким образом, мой план состоит в том, чтобы файл, который в настоящее время включен везде, действовал как селектор, чтобы решить, какие фактические файлы включить.

Из моего прочтения Apache SSI Specs Я считаю, что могу сделать это с помощью условных выражений, управляющих моим SSI.Что-то вроде:

<!--#if expr="[URI is page1.shtml]" -->
<!--#include virtual="page1contents.shtml" -->
<!--#elif expr="[URI is page2.shtml]" -->
<!--#include virtual="page2contents.shtml" -->
<!--#endif -->

Тогда мой вопрос: что нужно сделать в части [URI is page1], чтобы на самом деле проверить интересующее меня состояние?

Ответы [ 2 ]

1 голос
/ 29 августа 2010

Нашел ответ в деталях mod_include :

В приведенном ниже примере будет напечатано "in foo" если DOCUMENT_URI - /foo/file.html, "в баре", если это /bar/file.html и «ни в одном», иначе:

<!--#if expr='"$DOCUMENT_URI" = "/foo/file.html"' -->
in foo
<!--#elif expr='"$DOCUMENT_URI" = "/bar/file.html"' -->
in bar
<!--#else -->
in neither
<!--#endif -->
0 голосов
/ 30 июня 2017

SSI expr по-прежнему работает на современных серверах с использованием функции v или% (протестировано на Apache / 2.4.18). Вы также можете использовать название документа.

Пример (if-test для имени документа):

<!--#if expr='v("DOCUMENT_NAME")=~/about.html/'-->
<a class="active" href="#">
<!--#else -->
<a href="about.html">
<!--#endif -->
About</a>

Пример 2 (if-test для пути к документу):

<!--#if expr="%{DOCUMENT_URI} =~ /product/"-->
Product path
<!--#else-->
Some other path
<!--#endif-->
...