【问题标题】:Difference between IIS Redirect and Rewrite (in relation to redirecting)IIS 重定向和重写之间的区别(与重定向有关)
【发布时间】:2014-05-29 10:54:47
【问题描述】:

这个问题可能听起来很奇怪,但是给定一个article,绝对可以使用 rewrite 模块来执行重定向,就像使用 redirect 模块一样。两者都能够发出永久重定向 (301)。

有一个question 要求区别,但它谈到了用于纯粹rewrite 而不是redirect 的重写模块。另一个post 明确表示了这一点,但似乎没有得到足够的答案。

因此,我的问题是:这些模块之间有什么区别?在重定向方面,哪个优先于另一个?

【问题讨论】:

    标签: iis redirect url-rewrite-module


    【解决方案1】:

    注意:此答案不回答 IIS 重定向 (httpRedirect) 与 URL 重写模块的重定向之间的区别,而是 URL 重写模块之间的区别(重定向与重写)。

    如果您尝试将复杂的 URL(带有查询字符串)隐藏到更友好的 URL,那么重写是一种方法,因为浏览器/搜索引擎将始终看到 200OK 并假设内容来自请求的原始 URL。

    如果您试图向新 URL 的搜索引擎/用户指示资源的更改,那么当您发送 301 状态代码表示资源已从原始位置移动到这个新位置时,重定向是可行的方法。

    IIS 重定向:

    • 重定向发生在客户端
    • 浏览器在地址栏中看到不同的 URL。
    • 客户端知道重定向 URL。
    • 可以发出 301/302。编辑:(也可以发出303/307)
    • 有利于 SEO/搜索引擎指示新 URL。 mysite.com/abc 到 mysite.com/pqr
    • 可以重定向到同一站点或完全不同的站点。

    IIS 重写:

    • 重定向发生在服务器端
    • 浏览器在地址栏中看不到新的 URL。
    • 客户端不知道内容是否来自重写的 URL。
    • 未发布 301/302。假设重写的 URL 资源可用,这将有正常的 200 OK。
    • 很好地隐藏不友好的 URL 和 SEO。 mysite.com/article/test-sub/ 到 mysite.com/article.aspx?id=test-sub
    • 通常用于同一站点内的资源。

    请求处理(重定向):www.mysite.com/abc 重定向到 www.mysite.com/pqr

    1. 客户来电:www.mysite.com/abc
    2. URL 重写模块看到客户端 URL 的规则匹配并提供新的重定向 URL。
    3. 服务器以 301 响应客户端调用 www.mystite.com/pqr 的新 URL
    4. 客户端调用新 URL www.mystite.com/pqr
    5. 服务器以 200 OK 响应新 URL。 (地址栏显示新网址)

    请求处理(REWRITE):www.mysite.com/abc 你想指向 www.mysite.com/pqr

    1. 客户来电:www.mysite.com/abc
    2. URL 重写模块看到规则匹配并向 IIS 提供新的重写 URL,即 www.mysite.com/pqr,服务器在 IIS 中请求该 URL。
    3. 服务器以 200 OK 响应原始 URL,但内容来自重写的 url。 (地址栏显示原始 URL,客户端不知道您正在提供来自不同 URL 的内容)

    【讨论】:

    • 感谢您的全面回答,但这不是我想要的。我什至强调,我不是在谈论纯粹的重写,两个模块都可以用 301/302 响应。
    • 抱歉,我在 IIS 重定向模块 (httpRedirect) 与 URL 重写模块之间感到困惑。我将编辑我的答案以明确这与 2 个不同的模块无关,而是与 URL 重写有关。
    猜你喜欢
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2012-01-28
    • 2010-12-09
    • 2011-08-29
    • 2019-02-11
    相关资源
    最近更新 更多