【问题标题】:IIS Server Side Includes doesn't process ColdFusionIIS 服务器端包含不处理 ColdFusion
【发布时间】:2010-02-12 16:35:46
【问题描述】:

如何使用 IIS 中的服务器端包含模块来包含和处理来自 .htm 文件的 ColdFusion 文件?我目前在我的 html 文件中做这样的事情:

<!--#include virtual="navmenu.cfm"-->

这包括导航菜单文件的原始内容。我需要它来执行 ColdFusion 代码并返回该进程的 输出,而不是包含 raw ColdFusion 代码。

同样的语法在 Apache 中也能正常工作。

【问题讨论】:

  • 如果顶级文件扩展名是 .html - ColdFusion 将不会处理来自 .cfm 的内容

标签: iis-7 coldfusion ssi


【解决方案1】:

您是否只是想避免 URL 中的 CFM 扩展?

您不能使用 SSI 将 CFM 文件包含到静态 HTM 文件中。您可以配置 IIS 以将 HTM 文件发送到 CF 服务器进行解析。这将允许您在任何 HTM 文件中使用 CFINCLUDE。

或者,您可以使用 HTM 文件中的 ajax 并将解析的 CFM 内容加载到 DIV 中。

【讨论】:

  • 我会支持这个。将 HTM 文件发送到 CF,并使用常规 cfinclude。或者 AJAX,因为 SSI 只会将代码“复制/粘贴”到文件中,这意味着它将作为源代码出现而不被处理。
  • 我正在从 linux/apache 服务器转换为 windows/iis 服务器。让 CF 服务器解析所有 .htm 文件对我们来说并不是一个真正可行的选择。 ajax 选项实施起来有些繁琐。真的没有办法在 IIS 中进行等价处理吗?
  • 据我所知没有。与 IIS 相比,我更喜欢 Apache,但据我所知,让 IIS 将 HTM 文件发送到 CF 服务器并不是很困难。事实上,为了不让 CF 服务器处理所有这些静态 HTM 文件,我知道许多使用 IIS 的开发人员只处理 .HTML 文件,因此他们可以拥有仍然可以是动态的非 CFM 扩展。以下是让 CF 服务器在配置或不配置 IIS 的情况下解析 HTML externsion 的说明:pbell.com/index.cfm/2007/3/31/…
【解决方案2】:

如果您无法使首页在外界看来是 cfm,您是否考虑过使用 URL Rewrite Module for IIS?这样,您可以使用一些明确的 htm 使某些文件 cfms 以 cfm 重写规则,但不处理所有其他文件。除此之外,我认为可能没有一个优雅的答案,因为您正在混合静态和动态内容。

关于您对 ajax 的评论 - 我个人认为使用 ajax 并没有什么乏味的地方,但是 jquery 再次宠坏了您...

 <div id='menuhere'></div>

 $.get('navmenu.cfm', function(data) {$('.menuhere').html(data); });

完成与 SSI 相同的事情,加上(假设 jQuery 被缓存)您可以更快地加载主内容页面以启动。

【讨论】:

  • 我最终选择了这个解决方案,因为它是完成我需要的最快的方法。这对我来说不是最好的解决方案,因为我正在加载的 ColdFusion html 是页面导航。对于其他人,请注意此解决方案的最大缺点是没有搜索引擎可以访问通过 ajax 包含的任何内容,在本例中是我的导航。
【解决方案3】:

如果您使用的是 Coldfusion 页面,则为:

 <cfinclude template="navmenu.cfm">

如果您使用的是其他类型的页面,则需要将该内容放入 IFRAME

<iframe src="navmenu.cfm"></iframe>

问题是,如果您在服务器上有可用的 Coldfusion 技术,为什么不将该页面更改为 .cfm 页面并使用上述示例?

【讨论】:

  • 我可能不清楚。需要执行包含的文件是一个 .htm 文件,它需要 #include 语法和 SSI 模块(我刚刚编辑了问题以更好地反映这一点)。如果基础文件是 ColdFusion,您的回答会很有效。
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 2010-11-18
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多