将IIS的根目录重定向到应用程序根目录

时间:2015-03-26 14:21:15

标签: iis iis-8.5

我在IIS上安装了几个应用程序:

/abc
/bcd

现在,我想将转到/的用户重定向到/abc网站。由于root不是任何应用程序的一部分,因此我无法使用IIS重写模块,该模块使用web.config中定义的重定向。

所以我在IIS中安装了HTTP Redirection并启用了以下内容:

enter image description here

如果用户准确输入http://example.comhttp://example.com/,则服务器会重定向到http://example.com/abc/

但是,如果用户输入http://example.com/abc,服务器会将请求视为根目录中的,因此它也会应用重定向,从而导致http://example.com/abc/abc

我还尝试检查第一个复选框(将所有请求重定向到确切目标),但这会导致从http://example.com/abchttp://example.com/abc的重定向循环。

我希望那些输入example.com/abc的用户留在那里,并将用户example.com重定向到/abc应用程序。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

要修复重定向循环,您可以向目标添加尾随锚链接,例如:/abc/#。这可以防止IIS剥离尾部斜杠并创建从http://example.com/abchttp://example.com/abc的重定向循环

IIS HTTP Redirect Configuration

重定向示例

Request URL:https://example.com/abc
Request Method:GET
Status Code:302 Redirect

Response Headers
Location:https://example.com/abc/#
Server:Microsoft-IIS/8.0

Request URL:https://example.com/abc/
Request Method:GET
Status Code:200 OK

URL重写模块

或者,您仍然可以使用URL重写模块as discussed here,即使它适用于您的根站点而非应用程序。 {1}}文件应存在于您的Web根文件夹中(通常为web.config)。您还可以使用IIS管理器中的URL重写UI添加入站规则: IIS URL Rewrite Edit Inbound Rule

这会将%SystemDrive%\inetpub\wwwroot重定向到http://example.com/

如果用户输入http://example.com/abc/(且该文件不存在),则不会将其重定向到http://example.com/xyz,并且会收到/abc,与上面的HTTP重定向模块不同。