【发布时间】:2010-08-30 00:19:02
【问题描述】:
正如this question 中所讨论的,我正在使用 Apache mod_include 和条件流控制语句来根据父页面的 URL 更改包含的 shtml 文件的行为。我遇到的问题是网站上的某些页面是 PHP 页面,这似乎意味着 mod_include 指令被忽略(而是被视为标准 html cmets)。
有什么方法可以让 PHP 页面正确处理这些 mod_include 指令?
具体来说,这是我要处理的内容:
<!--#if expr='"$DOCUMENT_NAME" = /(podcasts\.php)|(series\.php)/' -->
<li id="features" class="current">
<!--#else -->
<li id="features">
<!--#endif -->
类似的行块在站点上的 .shtml 文件中起作用,但对于 php 页面,上述所有内容最终都会输出到客户端。
编辑:我想出的最接近解决方案的方法是模仿 php 文件中包含的 shtml 文件的功能。我不喜欢这个解决方案,因为这意味着将来添加链接需要将它们添加到多个位置。
【问题讨论】:
-
您是否遇到
<!--#include virtual="foo.php" -->未执行或mod_include 未处理.php 文件的问题? -
前者。在这种情况下不是专门针对
<!--#include -->,而是<!--#if expr='"$DOCUMENT_NAME" = /(mypage\.php)/--> -
已编辑问题以提供更多详细信息。
-
如果您担心将来不得不在多个地方添加链接,如果您选择了您心目中最接近的解决方案,为什么不使用一些存储/检索机制,让它成为一个 db,一个包含文件、数组和函数的文件夹,该函数将在需要时获取并回显标记块,这样您只需更改一次引用的标记并包含它,还是我没有得到正确的问题?
-
问题在于该站点的大部分内容是静态 .shtml 文件。 Apache 可以处理 SSI 以将一个 shtml 文件加载到另一个文件中。据我所知,没有办法(除了一些丑陋的 AJAX hack)将动态的、数据库驱动的函数加载到静态 shtml 文件中。我错了吗?
标签: php apache mod-include