我正在尝试使用 IIS7 模拟在单个网站上托管多个域。
我设置了一个文件夹结构,其中有一个 web_root 文件夹,其中包含一个简单的 index.html、一个 web.config 和一个包含 asp.net web 应用程序的文件夹 (connect)。我尝试添加一个 URL 重写规则,该规则会将请求发送到主机 localhost.nerdfurio.us 并将其指向 connect 文件夹(我也将 localhost.nerdfurio.us 添加到我的主机文件中)。
web_root 中的 web.config 如下所示
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
</modules>
<rewrite>
<rules>
<rule name="nerdfurious" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^localhost.nerdfurio.us$" />
<add input="{PATH_INFO}" pattern="^/connect/" />
</conditions>
<action type="Rewrite" url="connect/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
当我在浏览器中输入“localhost.nerdfurio.us”时,我会获取 index.html 文件的内容。如果我在浏览器中输入 localhost.nerdfurio.us/connect,我会收到 404 错误列表“http://localhost.nerdfurio.us:80/connect/connect/' 作为请求的 URL。我遗漏了什么?
答案1
问题是,{PATH_INFO}
规则需要negate="true"
在标签中有一个属性。这意味着当模式不匹配时。因为当我访问根目录时,“/connect/”不在 URL 中,所以执行重写操作的所有条件都不满足。