2010-08-28 6 views
1

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

Из моего чтения 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] частях, что на самом деле проверить состояние я заинтересован в?

ответ

1

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

Ниже будет приведен пример печати «в обув» если DOCUMENT_URI является /foo/file.html, «в строке» если/бар /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

SSI Expr все еще работает на современных серверах, использующих функцию V или% (проверено на Apache/2.4.18). Вы также можете использовать имя документа.

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

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

Пример 2 (если тест на пути к документу):

<!--#if expr="%{DOCUMENT_URI} =~ /product/"--> 
Product path 
<!--#else--> 
Some other path 
<!--#endif--> 
Смежные вопросы