在IIS 7中配置SSI

时间:2009-12-01 17:47:59

标签: iis server-side-includes ssi shtml

我已经在我的计算机上安装了ServerSideIncludes模块,但有一个例外。

<!--#include virtual="meta.inc" -->

上面的一行导致了问题。我知道我必须使用virtual更改file,但我有一个庞大的网站,这意味着我必须更改至少1000行代码,我正在寻找运行virtual的方法在IIS 7中正确使用。

我一直在寻找这个解决方案,但我已经找到了上面提到的解决方案。

如果不将virtual更改为file

,您知道如何解决此问题吗?

感谢。

3 个答案:

答案 0 :(得分:1)

您是否在您的网站上启用了父路径?导航到IIS中站点的“ASP”部分,然后在“行为”部分中选择“启用父路径”,看看是否有帮助。

Parent Paths选项允许您在调用MapPath等函数时使用“..”,方法是允许使用.. \表示法相对于当前目录的路径。将此属性设置为True可能会构成安全风险,因为包含路径可以访问应用程序根目录之外的关键或机密文件。

答案 1 :(得分:0)

SSI不是ASP--它们是不同的技术。

我发现每次微软发布他们的任何产品的新版本时,有时某些功能在以前的版本中有效,或者在新版本中根本不工作,看起来这个问题可能就是其中之一

所以,您可能需要考虑切换到Apache HTTPd(如果可以的话)然后您不需要对文件进行所有这些更改 - 我发现Apache一直支持SSI (以及支持它的所有HTTPd版本中的其他技术/模块,配置指令等)。这种一致性是我非常喜欢的原因之一。

答案 2 :(得分:0)

这不是一个真正的答案,而是更能确认您的问题。但是,在我的答案结束时,请看virtual可能对您有用的一种方式。

来自MSDN博客文章IIS: Notes on Server-Side Includes (SSI) Syntax (KB 203064 Revisited) (日期为2010-12-28;适用于IIS版本4.0到7.5)


有关文件和虚拟语法的更多信息

使用文件路径的SSI指令可以使用文件虚拟路径引用文件。

  • 文件元素用于与当前文档的文件夹相关的文件。以下示例包含当前文件夹中的文件:
<!--#include file="myfile.txt"-->
  • 虚拟元素表示相对于Web服务器的基本文件夹的路径。以下示例包含/ scripts虚拟文件夹中的文件:
<!--#include virtual="/scripts/myfile.txt"-->

结论: file属性用于指定与当前文档相关的文件位置。因此,如果您的情况需要,那么您确实需要将virtual属性更改为file属性。

但是有一个可能的例外。维基百科上的文章Server Side Includes显示以下示例:

<!--#include virtual="menu.cgi" -->

这向我建议virtual文件路径必须以/开头。如果没有前导/virtual文件的位置相对于Web服务器的基本文件夹。

因此,在我看来,filevirtual属性可能表现相同 如果 正在引用的文件恰好位于Web服务器的基本文件夹(或基本文件夹的子文件夹)。