这个问题可能听起来很奇怪,但鉴于一篇文章,绝对可以使用重写模块来执行重定向,就像使用重定向模块一样。两者都能够发出永久重定向 (301)。
有一个 question 要求区别,但它谈到重写模块纯粹用于 rewrite 而不是 redirect。另一篇post清楚地说明了这一点,但似乎没有得到足够的答案。
因此,我的问题是:这些模块有什么区别?就重定向而言,哪个优于另一个?
注意:此答案并不回答 IIS 重定向 (httpRedirect) 与 URL 重写模块的重定向之间的区别,而是回答 URL 重写模块(重定向与重写)之间的区别。
如果您尝试将复杂的 URL(带有查询字符串)隐藏为更友好的 URL,则重写是最佳选择,因为浏览器/搜索引擎将始终看到 200OK 并假设内容来自请求的原始 URL。
如果您尝试向搜索引擎/新 URL 用户指示资源更改,则可以使用重定向,因为您发送 301 状态代码,表示资源已从原始位置移至新位置。
IIS 重定向:
IIS 重写:
请求处理(重定向):www.mysite.com/abc 重定向到 www.mysite.com/pqr
请求处理(重写):您想要指向 www.mysite.com/pqr 的 www.mysite.com/abc
Rewrite 可以做 Redirect 可以做的所有事情,但反之则不然。 认为重定向是一种快速设置,您可以简单轻松地设置单个重定向规则。您只能提供一项用于重定向的通用规则。 而 Rewrite 可以让您更好地控制如何使用正则表达式处理任何给定的请求 URL。您还可以设置多个规则来定义自定义设置。
例如: 我想将 www.me.com 重定向到 www.me.com/app1 但如果请求是 www.me.com/notThisOne 然后转到 www.me.com/app2,你只能使用重写。