【问题标题】:Conditional SSI Based on URI基于 URI 的条件 SSI
【发布时间】:2011-04-05 07:28:09
【问题描述】:

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

根据我对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] 部分应该包含什么来实际测试我感兴趣的条件?

【问题讨论】:

    标签: apache server-side-includes


    【解决方案1】:

    mod_include的详情中找到答案:

    下面的例子将打印“in foo” 如果 DOCUMENT_URI 是 /foo/file.html, “in bar”,如果它是 /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 -->
    

    【讨论】:

      【解决方案2】:

      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-->
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-29
        • 2023-03-11
        • 1970-01-01
        • 2022-10-15
        • 2014-09-20
        • 1970-01-01
        相关资源
        最近更新 更多