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

che*_*ica 5 iis iis-8.5

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

/abc
/bcd
Run Code Online (Sandbox Code Playgroud)

现在我想重定向访问//abc网站的用户。由于根不是任何应用程序的一部分,我不能使用 IIS 重写模块,它使用web.config.

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

在此处输入图片说明

这是有效的,如果用户完全输入http://example.comhttp://example.com/,服务器将重定向到http://example.com/abc/

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

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

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

小智 6

要解决的重定向循环,你可以添加一个尾部的锚链接到目的地,例如:/abc/#。这可以防止 IIS 剥离尾部斜杠并创建从http://example.com/abc到的重定向循环http://example.com/abc

IIS HTTP 重定向配置

示例重定向

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
Run Code Online (Sandbox Code Playgroud)

URL重写模块

或者,您仍然可以使用此处讨论的 URL 重写模块即使它用于您的根站点而不是应用程序。该web.config文件应存在于您的 Web 根文件夹中(通常为%SystemDrive%\inetpub\wwwroot)。您还可以使用 IIS 管理器中的 URL 重写 UI 添加入站规则: IIS URL 重写编辑入站规则

这将重定向http://example.com/http://example.com/abc/.

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