我的服务器上有一个像这样的文件夹:
C:\inetpub\wwwroot\blah
在 IIS 中,我还设置了一个“/blah”虚拟文件夹,指向 C:\BLAH
自然,当站点访问者键入http://www.myserver.com/blah/test.html时,IIS 会查找 C:\BLAH\test.html,而不是 C:\inetpub\wwwroot\blah\test.html。在大多数情况下,这是我想要的行为,因为大多数文件都在 C:\BLAH 中。但是,当文件确实存在于 C:\inetpub\wwwroot\blah 中时,我希望服务器先在那里查找它,如果找不到,然后在 C:\BLAH 中查找。基本上我希望 C:\inetpub\wwwroot\blah 中的文件成为虚拟目录的“例外”。让服务器从该文件夹返回文件(如果它们存在),但如果它们不从 C:\BLAH 中提取它们而不是返回 404。
我在 Windows Server 2000 上运行 IIS 5.0。
这可能吗?谢谢。
这是一种贫民区,但它可能是解决您的问题的一种简单方法。
下面是一小段 ASP.Net 代码,可以充当 404 处理程序:
您可能可以通过自定义编写的 ISAPI 过滤器来做到这一点,但我不知道 IIS 或现有产品中的任何方式可以完全满足您的需求。
IIRF是一个免费的 URL 重写器,它能够在重写之前检查目录是否存在。规则如下所示:
您还可以使用通配符“blah”。为此,您需要一个命名覆盖 vdir 的约定。它看起来像这样:
还有测试目录存在的条件。查看IIRF 文档了解详细信息。