我是 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 和/或修补响应:
那里相当冗长的说明可以归结为:
- 安装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>