代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Blake

基于URI的条件ssi

  •  1
  • Jeffrey Blake  · 技术社区  · 14 年前

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

    从我读到的 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] 其中一部分是为了测试我感兴趣的条件?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Jeffrey Blake    14 年前

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

    下面的示例将打印“in foo” 如果文档的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 -->
    
        2
  •  0
  •   eye-wonder    7 年前

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