1

我正在重做包含我网站的几十个页面的导航栏。我想做的更改之一是根据用户所在的页面来改变包含的内容。因此,我的计划基本上是要拥有当前随处可见的文件作为选择器,以决定要包含哪个实际文件。

根据我对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],在实际测试我感兴趣的条件时应该采取什么措施?

4

2 回答 2

1

在mod_include的详细信息中找到了答案:

如果 DOCUMENT_URI 是 /foo/file.html,下面的示例将打印“in foo”,如果它是 /bar/file.html,则打印“in bar”,否则打印“in both”:

<!--#if expr='"$DOCUMENT_URI" = "/foo/file.html"' -->
in foo
<!--#elif expr='"$DOCUMENT_URI" = "/bar/file.html"' -->
in bar
<!--#else -->
in neither
<!--#endif -->
于 2010-08-29T01:22:49.050 回答
0

SSI expr 仍然适用于使用 v 函数或 % 的现代服务器(在 Apache/2.4.18 上测试)。您也可以使用文档名称。

示例(对文档名称进行 if 测试):

<!--#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-->
于 2017-06-30T10:58:27.880 回答