2010-08-28 106 views
1

我正在重做包含幾十個網站頁面的導航欄。我想要做的更改之一是根據用戶所在的頁面來改變所包含的內容。因此,我的計劃基本上是讓目前包含的文件充當選擇器來決定包含哪些實際文件。基於URI的條件SSI

從我讀的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細節的答案:

下面的例子將「在欄」打印「中foo」的 如果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-->