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

在PHP中使用Apache服务器端流控制?

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

    正如中所讨论的 this question ,我正在使用Apache mod_include 使用条件流控制语句根据父页的URL更改包含的shtml文件的行为。我现在遇到的问题是,网站上的一些页面是PHP页面,这似乎意味着mod ou include指令被忽略(而被视为标准的HTML注释)。

    有没有办法让PHP页面正确地处理这些mod ou include指令?

    具体来说,以下是我试图处理的内容:

    <!--#if expr='"$DOCUMENT_NAME" = /(podcasts\.php)|(series\.php)/' -->
    <li id="features" class="current">
    <!--#else -->
    <li id="features">
    <!--#endif -->
    

    类似的行块在站点上的.shtml文件中起作用,但是对于php页面,以上所有内容最终都会输出到客户机。

    编辑:与我提出的解决方案最接近的是模仿php文件中包含的shtml文件的功能。我不喜欢这个解决方案,因为这意味着将来添加链接需要将它们添加到多个位置。

    2 回复  |  直到 12 年前
        1
  •  1
  •   Rob Olmos    15 年前

    假设您正在通过mod_php运行php(可能不重要),只需添加:

    AddOutputFilter INCLUDES .shtml .php
    

    它对.shtml和.php都很好,并且都得到了正确的解析。

        2
  •  0
  •   Philip    12 年前

    我刚开始阅读有关ssi的内容,但在 http://httpd.apache.org/docs/2.2/howto/ssi.html#configuring

    对不该做什么的简短评论。你偶尔会看到人 建议您只需告诉Apache为解析所有.html文件 ssi,这样你就不必乱弄.shtml文件名了。这些 人们可能没有听说过Xbithack。要记住的事 就是说,通过这样做,您需要Apache通读 它发送给客户机的每个文件,即使他们没有 包含任何SSI指令。这会使事情慢下来很多,而且 不是个好主意。

    因此,如果我理解正确,就不应该将.php包含在addoutputfilter中,因为如果强制Apache搜索所有.php页以获取ssi指令,那么它将减慢服务器的运行速度。

    也许你的问题还有别的解决办法?

    http://httpd.apache.org/docs/2.2/mod/mod_include.html#xbithack

    菲利普

    推荐文章