IIS 7 中 SSI 的配置
我已经在我的计算机上安装了 ServerSideInincludes 模块,它运行良好,但有一个例外。
<!--#include virtual="meta.inc" -->
上面的行导致了问题。我知道我必须用 file
更改 virtual
但我有一个巨大的网站,这意味着我必须更改至少 1000 行这样的代码,我正在寻找一种方法在 IIS 7 中正确运行virtual
。
我一直在寻找这个解决方案,但我只能找到上面提到的解决方案。
您知道如何在不将 virtual
更改为 file
的情况下解决此问题吗?
谢谢。
I've installed ServerSideIncludes module on my computer and it works great with one exception.
<!--#include virtual="meta.inc" -->
The line above is causing the problem. I know I must change virtual
with file
but I have a huge website and it means I must change at least 1000 line of code like this and I am looking for a way to run virtual
properly in IIS 7.
I've been looking for this solution but all I've been able to find the solution I've mentioned above.
Do you know how to solve this problem without changing the virtual
to file
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您的网站上启用了父路径吗?在 IIS 中导航到站点的“ASP”部分,然后在“行为”部分中选择“启用父路径”,看看是否有帮助。
“父路径”选项允许您在调用 MapPath 等函数时使用“..”,方法是允许使用 ..\ 符号相对于当前目录的路径。将此属性设置为 True 可能会构成安全风险,因为包含路径可以访问应用程序根目录之外的关键或机密文件。
Do you have parent paths enabled over your site? Navigate to the "ASP" section of your site in IIS and select "Enable Parent Paths" in the "Behavior" section and see if that helps.
The Parent Paths option permits you to use ".." in calls to functions such as MapPath by allowing paths that are relative to the current directory using the ..\notation. Setting this property to True may constitute a security risk because an include path can access critical or confidential files outside the root directory of the application.
这并不是真正的答案,而是对您的问题的确认。但在我的答案的最后,请参阅
virtual
可能对您有用的一种可能的方式。来自 MSDN 博客文章 IIS:有关服务器端包含 (SSI) 语法的说明(KB 203064 重访) (日期为 2010 年 12 月 28 日;适用于 IIS 版本 4.0 至7.5):
有关文件和虚拟语法的更多信息
使用文件路径的 SSI 指令可以通过使用文件或虚拟来引用文件小路。
结论:
file
属性用于指定相对于当前文档的文件位置。因此,如果这是您的情况所需要的,您确实需要将virtual
属性更改为file
属性。不过,有一个可能的例外。 Wikipedia 上的文章 服务器端包含 显示了以下示例:
这向我表明 < code>虚拟文件路径不一定需要以
/
开头。如果没有前导/
,则虚拟
文件的位置相对于 Web 服务器的基本文件夹。因此,在我看来,
file
和virtual
属性的行为可能相同如果被引用的文件碰巧位于 Web 服务器的基本文件夹(或基本文件夹的子文件夹)中。This is not really an answer but instead is more a confirmation of your problem. But see one possible way that
virtual
might work for you at the end of my answer.From the MSDN blog post IIS: Notes on Server-Side Includes (SSI) Syntax (KB 203064 Revisited) (dated 2010-12-28; applies to IIS versions 4.0 through 7.5):
More Information on File and Virtual Syntax
SSI directives that use file paths can reference files by using a file or virtual path.
Conclusion: The
file
attribute is used to designate a file location that is relative to the current document. So, if that is what is needed in your situation, you'll indeed need to change thevirtual
attribute to thefile
attribute.There is one possible exception, though. The article Server Side Includes on Wikipedia shows the following example:
This suggests to me that a
virtual
file path does not necessarily need to begin with a/
. In the absence of a leading/
, the location of avirtual
file is relative to the base folder of the web server.So, it appears to me that the
file
andvirtual
attributes might behave identically if the files being referenced happen to be located in the base folder (or subfolders of the base folder) of the web server.SSI 不是 ASP——它们是不同的技术。
我发现,每次微软发布任何产品的新版本时,有时在以前版本中工作的某些功能在新版本中工作不同或根本不起作用,看起来这个问题可能就是其中之一。
因此,您可能需要考虑切换到 Apache HTTPd(如果可以的话),然后您就不需要对文件进行所有这些更改——我发现 Apache 在对 SSI(以及其他技术/模块、配置指令等)在所有支持它的 HTTPd 版本中。这种一致性是我真正喜欢它的原因之一。
SSI is not ASP -- they're different technologies.
I have found that each time Microsoft releases a new version of any of their products that sometimes certain features that worked in previous versions work differently or not at all in the newer versions, and it looks like this problem may be one of those.
So, you might want to consider switching to Apache HTTPd (if you can) and then you won't need to make all those changes to your files -- I've found that Apache has been consistent in their support for SSI (and other technologies/modules, configuration directives, etc.) in all versions of HTTPd that support it. This consistency is one of the reasons I really like it.