我在 IIS 上安装了几个应用程序:
/abc
/bcd
Run Code Online (Sandbox Code Playgroud)
现在我想重定向访问/该/abc网站的用户。由于根不是任何应用程序的一部分,我不能使用 IIS 重写模块,它使用web.config.
所以我HTTP Redirection在 IIS 中安装并启用了以下功能:

这是有效的,如果用户完全输入http://example.com或http://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

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

这将重定向http://example.com/到http://example.com/abc/.
如果用户输入http://example.com/xyz(并且该文件不存在),他们将不会被重定向到/abc并且会收到一个404,这与上面的 HTTP 重定向模块不同。
| 归档时间: |
|
| 查看次数: |
6827 次 |
| 最近记录: |