我正在重做包含数十个网站页面的导航栏。我想要做的一个更改是根据用户所在的页面更改包含的内容。因此,我的计划基本上是让当前包含的文件充当选择器,以决定要包含哪些实际文件。
从我对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]
部分应该去实际测试我感兴趣的条件?
答案 0 :(得分:1)
在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 -->
答案 1 :(得分:0)
SSI expr仍可在使用v函数或%的现代服务器上运行(在Apache / 2.4.18上测试)。您也可以使用文档名称。
示例(对文档名称进行if-test):
const theRef = event.data.ref;
const collectionRef = theRef.parent.child('days');
collectionRef.once('value').then(messagesData => {
if(messagesData.numChildren() > 1) {
let updates = {};
updates['/days'] = null;
return defaultDatabase.ref().update(updates); // 'days' doesn't get removed even if it has more than 1 child (as in the image)!
}
});
return collectionRef;
示例2(文档路径上的if-test):
<!--#if expr='v("DOCUMENT_NAME")=~/about.html/'-->
<a class="active" href="#">
<!--#else -->
<a href="about.html">
<!--#endif -->
About</a>