【问题标题】:Redirect IIS's root to application root将 IIS 的根目录重定向到应用程序根目录
【发布时间】:2024-04-17 08:25:01
【问题描述】:

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

/abc
/bcd

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

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

这可行,如果用户准确输入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 应用程序。我该怎么做?

【问题讨论】:

    标签: iis iis-8.5


    【解决方案1】:

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

    重定向示例

    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 重写模块 as discussed here,即使它用于您的根站点而不是应用程序。 web.config 文件应该存在于您的 Web 根文件夹中(通常是 %SystemDrive%\inetpub\wwwroot)。您还可以使用 IIS 管理器中的 URL 重写 UI 添加入站规则:

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

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

    【讨论】:

    • 为什么是^$,你能解释一下吗?
    最近更新 更多