IIS7 主站点及其子目录也是站点

IIS7 主站点及其子目录也是站点

我是 IIS 管理的新手,但我需要建立一个站点,该站点的站点根目录有多个也是站点的目录。

例如,假设我的网站位于http://www.example.com

该网站的根目录有多个文件夹用于存放其内容,但还有另外两个目录,即 /community 和 /labs。

我想让这些目录成为不同站点的文档根目录,这样如果你访问http://www.example.com/community或者http://www.example.com/labs如果你从那里进入主网站http://www.example.com

实际上,这将是一个目录中的 3 个站点。

我知道如何使用不同的端口创建单独的站点,但我希望它们都位于端口 80 上。

这些子目录站点是虚拟站点吗?我知道这是可以做到的,因为我们的系统管理员已经为我们的公司站点设置了它,我已多次发布过内容,但我正在尝试自己做这件事,但我无法从公司 IT 部门得到他们是如何做到的答案。:^)

谢谢,斯科特

答案1

在 IIS 7.5 中这很容易

因为“网站”简单地说就是一个占位符,至少有一个端点映射(捆绑),以及一个或多个应用程序。

创建一个网站(或修改默认网站的设置)。当您在 IIS 管理器中展开网站时,您将看到一个子目录树,即您的网站根应用程序指向的物理目录中的子目录。

右键单击要在其中托管另一个应用程序的子目录(例如“社区”),然后选择转换为应用程序。现在您将能够配置备用应用程序池来提供内容,并且可以单独配置应用程序,而不受(几乎)根应用程序上的任何功能设置的影响。

如需更深入的解释,请访问Mike Volodarsky 的博客,他设计了 IIS 7 应用程序架构,所以如果有人问起,他知道什么是什么 :-)

答案2

在IIS7中,每个站点都有一个默认应用程序,但您可以添加子应用非常简单。只需右键单击网站,然后单击“添加应用程序”。在这里,您可以指定别名 (/community)、应用程序池(可能需要事先创建一个新的)以及服务器上物理文件的路径。

答案3

另一种方式是不触及现有网站(因为许多网站是由 M$ 产品自动创建和管理的Gically) 是一个反向代理,必要时可以重写 URL 和/或修补响应:

具有 URL 重写 v2 和应用程序请求路由的反向代理

那里相当冗长的说明可以归结为:

  • 安装IIS 重写扩展
  • 将这些行类似的内容添加到根目录web.config/configuration/system.webServer(显示了如何使用InetMgr的 UI 添加它们):
<rewrite>
    <!--route requests-->
    <rules>
        <rule name="Reverse Proxy to webmail" stopProcessing="true">
            <match url="^webmail/(.*)" />
            <action type="Rewrite" url="http://localhost:8081/{R:1}" />
        </rule>
        <rule name="Reverse Proxy to payroll" stopProcessing="true">
            <match url="^payroll/(.*)" />
            <action type="Rewrite" url="http://localhost:8082/{R:1}" />
        </rule>
    </rules>
    <!--patch response HTML-->
    <outboundRules>
        <rule name="Add application prefix" preCondition="IsHTML">
            <match filterByTags="A" pattern="^/(.*)" />
            <conditions>
                <add input="{URL}" pattern="^/(webmail|payroll)/.*" />
            </conditions>
            <action type="Rewrite" value="/{C:1}/{R:1}" />
        </rule>
        <preConditions>
            <preCondition name="IsHTML">
            <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
            </preCondition>
        </preConditions>
    </outboundRules>
</rewrite>

相关内容