HTTPredirect与URL重写(IIS)

在IIS菜单中,您有HTTPredirect和URL重写。 后者则有一个重写动作和一个redirect动作。 我想知道这些之间有什么区别。

HTTPredirect是一个执行HTTPredirect的模块,它是一个带有位置标题的300级响应。 浏览器读取这个300级的reaponse,parsingLocation头并redirect到指定的地址。 在视觉上我们看到浏览器的地址更改。

根据最终结果,URL的redirect操作types与HTTPredirect完全相同。 但是,通过URL重写,我们可以制定更复杂的redirect规则,即使用HTTPredirect也能做到这一点。

重写URL会导致在许多模块运行之前将URL重写为其他值。 这会导致执行基于更改的URL而不是原来的执行。 这完全是服务器端,所以浏览器最终收到HTTP响应。 如果回复不是300级别的响应,我们甚至不会在浏览器中看到URL更改。

重写示例

比方说,你有一个ASP.NET Web Forms页面,它有一个/Users.aspx?id=3页面来查找用户3的信息。 我们将创build一个匹配^ users /(\ d +)$的规则,并将此规则重写为/user.aspx?id={R:1}。 这会导致像http:// server / users / 3这样的URL在内部处理为http://server/users.aspx?id = 3 。 浏览器将不会看到地址更改。

redirect的例子

如果上面的规则是redirect规则。 URL / users / 3会导致一个300级别的响应,并将Location标头设置为/users.apsx?id=3,浏览器将导航到此页面。 我们会看到浏览器的地址为http://server/users.aspx?id = 3