AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 22702
Accepted
Joshua Carmody
Joshua Carmody
Asked: 2009-06-10 07:48:28 +0800 CST2009-06-10 07:48:28 +0800 CST 2009-06-10 07:48:28 +0800 CST

我可以为 IIS 虚拟目录创建“例外”吗?

  • 772

我的服务器上有一个像这样的文件夹:

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。

这可能吗?谢谢。

iis virtualdirectories
  • 3 3 个回答
  • 579 Views

3 个回答

  • Voted
  1. Best Answer
    MattB
    2009-06-10T12:07:30+08:002009-06-10T12:07:30+08:00

    这是一种贫民区,但它可能是解决您的问题的一种简单方法。

    • 创建第二个指向 c:\blah 的虚拟目录。
    • 在“blah”虚拟目录(指向 C:\inetpub\wwwroot\blah)中,为 404 错误设置自定义错误处理程序,该处理程序是 c:\inetpub\wwwroot\blah\ 中的 ASP 或 ASP.Net 页面
    • 在 404 处理程序 ASP.Net 页面中,
      • 拉取请求的 URL(它应该是 Request.QueryString 中唯一的东西)
      • 砍掉除请求的文件名之外的所有内容
      • 重定向到“/cblah/FILENAME”。

    下面是一小段 ASP.Net 代码,可以充当 404 处理程序:

    string qs = Page.Request.QueryString.ToString();
    qs = Server.UrlDecode(qs);
    int c = qs.LastIndexOf("/");
    string filepath = qs.Substring(c+1);
    Response.Redirect("/cblah/"+filepath);
    
    • 1
  2. Justin Scott
    2009-06-10T07:55:59+08:002009-06-10T07:55:59+08:00

    您可能可以通过自定义编写的 ISAPI 过滤器来做到这一点,但我不知道 IIS 或现有产品中的任何方式可以完全满足您的需求。

    • 0
  3. Cheeso
    2009-07-15T18:48:16+08:002009-07-15T18:48:16+08:00

    IIRF是一个免费的 URL 重写器,它能够在重写之前检查目录是否存在。规则如下所示:

    # This rule matches, eg, http://server/blah/test.html
    # It does "no rewrite" (-) if the file c:\blah\test.html does NOT exist. 
    # The url stub /blah must map to an existing vdir. 
    RewriteCond  c:\blah\$1        !-f
    RewriteRule  ^/blah/(.*)$      -  [L]
    
    # If the file does exist, rewrite to the alternative vdir. 
    RewriteCond  c:\blah\$1           -f
    RewriteRule  ^/blah/(.*)$         /override-vdir/$2    [L]
    

    您还可以使用通配符“blah”。为此,您需要一个命名覆盖 vdir 的约定。它看起来像这样:

    # This rule matches, eg, http://server/blah/test.html
    # It does nothing if the file c:\blah\test.html does not exist. 
    RewriteCond  c:\$1\$2           !-f
    RewriteRule  ^/([^/]+)/(.*)$    -  [L]
    
    RewriteCond  c:\$1\$2            -f
    RewriteRule  ^/([^/]+)/(.*)$    /override-$1/$2    [L]
    

    还有测试目录存在的条件。查看IIRF 文档了解详细信息。

    • 0

相关问题

  • IIS 6.0 (Windows Server 2003) 上的 HTTP 压缩

  • 这个 Web 服务器可以处理多少个站点?[复制]

  • 如何在 IIS 中发送响应标头?

  • IIS 优化

  • IIS 6.0 (Windows Server 2003) 备份的最佳实践?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve