Iis 7 IIS服务器端包括';冷熔合法

Iis 7 IIS服务器端包括';冷熔合法,iis-7,coldfusion,ssi,Iis 7,Coldfusion,Ssi,如何使用IIS中的服务器端包含模块包含和处理.htm文件中的ColdFusion文件?我目前正在我的html文件中执行类似的操作: <!--#include virtual="navmenu.cfm"--> 这包括navmenu文件的原始内容。我需要它来执行ColdFusion代码并返回该过程的输出,而不是包含原始ColdFusion代码 同样的语法在Apache中也能正常工作。如果您使用的是Coldfusion页面,那么它是: <cfinclude template=

如何使用IIS中的服务器端包含模块包含和处理.htm文件中的ColdFusion文件?我目前正在我的html文件中执行类似的操作:

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

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


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

如果您使用的是Coldfusion页面,那么它是:

 <cfinclude template="navmenu.cfm">

如果您使用的是另一种类型的页面,则需要将该内容放入IFRAME中

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


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

您只是想避免URL中的cfm扩展

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


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

如果无法使首页在外部看起来像CFM,您是否考虑过使用?这样,您就可以使用一些显式的htm-to-cfm重写规则使某些文件成为cfm,但不处理其他所有文件。除此之外,我认为可能没有一个优雅的答案,因为您混合了静态和动态内容

关于你对ajax的评论——就我个人而言,我并不觉得使用ajax有什么乏味的地方,但jquery还是让你扫兴

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

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

$.get('navmenu.cfm',函数(数据){$('.menuhere').html(数据);});

实现与SSI plus相同的功能(假设jQuery被缓存),您可以更快地启动主内容页。

我可能还不清楚。需要包含的文件是一个.htm文件,它需要#include语法和SSI模块(我刚刚编辑了这个问题以更好地反映这一点)。如果基本文件是ColdFusion,那么您的答案将非常有用。如果顶级文件扩展名是.html,那么ColdFusion将不会处理.cfmI文件中的内容。将HTM文件发送到CF,并使用常规的cfinclude。或者是AJAX,因为SSI只是将代码“复制/粘贴”到文件中,这意味着它将作为源代码出现而不被处理。让CF服务器解析所有的.htm文件对我们来说并不是一个切实可行的选择。ajax选项的实现会有点乏味。真的没有办法在IIS中进行同等的处理吗?据我所知没有。与IIS相比,我更习惯使用Apache,但据我所知,让IIS将HTM文件发送到CF服务器并不困难。事实上,为了不让CF服务器处理所有这些静态HTM文件,我知道许多开发人员只使用IIS处理.HTML文件,因此他们可以使用非CFM扩展名,该扩展名仍然可以是动态的。以下是让CF server解析HTML extension(带或不带配置IIS)的说明:我最终选择了这个解决方案,因为这是实现我所需的最快方法。但这对我来说不是最好的解决方案,因为我加载的ColdFusion html是页面导航。对于其他人来说,请注意,这个解决方案的一大缺点是没有搜索引擎能够通过ajax访问包含的任何内容,在本例中,这就是我的导航。