在 IIS 菜单中,您有 HTTP 重定向和 URL 重写。后者有重写操作和重定向操作。我想知道所有这些之间有什么区别。
答案1
HTTP redirect 是一个执行 HTTP 重定向的模块,即带有 Location 标头的 300 级响应。浏览器读取此 300 级响应,解析 Location 标头并重定向到指定的地址。直观地,我们看到浏览器的地址发生了变化。
就最终结果而言,URL 的重定向操作类型与 HTTP 重定向完全相同。但是,使用 URL 重写,我们可以制定比 HTTP 重定向更复杂的重定向规则。
重写 URL 会导致在许多模块运行之前将 URL 重写为其他值。这会导致执行基于更改后的 URL 而不是原始 URL。这完全是在服务器端进行的,因此浏览器最终会收到 HTTP 响应。如果响应不是 300 级响应,我们甚至不会在浏览器中看到 URL 更改。
重写示例
假设您有一个 ASP.NET Web 表单页面,其中有一个 /Users.aspx?id=3 页面用于查找用户 3 的信息。我们将创建一个匹配 ^users/(\d+)$ 的规则,并将此规则重写为 /user.aspx?id={R:1}。这会导致类似以下 URLhttp://服务器/用户/3内部处理为http://服务器/用户.aspx?id=3。浏览器不会看到地址改变。
带有重定向的相同示例
如果上述规则是重定向规则。URL /users/3 将导致 300 级响应,其中 Location 标头设置为 /users.apsx?id=3,并且浏览器将导航到此页面。我们将看到浏览器的地址http://服务器/用户.aspx?id=3