【问题标题】:What's the difference between [R=301] and [R=301,L]?[R=301] 和 [R=301,L] 有什么区别?
【发布时间】:2013-09-23 12:50:33
【问题描述】:

谁能与我分享 301 重定向中 [R=301][R=301,L] 之间的区别?哪个最适合重定向网址?

虽然两者都可以正常工作,但我确实注意到 [R=301,L] 将 URL 更改为新 URL,而 [R=301] 仅重定向内容。

谁能分享一下这方面的见解?

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    不管R=301L 标志意味着Last 并且当您想要标记结束特定的重写规则时应该放置在规则中。

    根据official doc:

    [L] 标志导致 mod_rewrite 停止处理规则集。在 大多数情况下,这意味着如果规则匹配,则没有其他规则 将被处理。这对应于 Perl 中的最后一个命令,或者 C 中的 break 命令。使用此标志来指示当前 规则应立即应用,无需考虑进一步的规则。

    【讨论】:

    • 外部重定向标志(R)不会自动暗示“最后一个”(L)吗?我想不出任何你想重定向的情况,但只有在应用其他规则之后。
    • 回答我自己的评论,并不意味着。文档说:“您几乎总是希望将 [R] 与 [L] 一起使用(即使用 [R,L])”并继续说明为什么不包括 L 经常会搞砸。跨度>
    【解决方案2】:

    R 进行重定向,L 禁止应用低于此规则的任何规则。如果没有L,则其余规则将应用于新 URL。

    官方文档说:

    您几乎总是希望将 [R] 与 [L] 结合使用(即使用 [R,L]),因为 [R] 标志本身会预先添加 http://thishost[:thisport]到 URI,然后将其传递给规则集中的下一个规则,这通常会导致“请求中的 URI 无效”警告。

    【讨论】:

      【解决方案3】:

      标志 [L] 和 [R=301,L] 之间的主要区别在于,R 标志会导致显式外部 HTTP 重定向(有一个例外),而没有 R 标志,该规则也可能导致隐式内部重定向,取决于实际的规则和请求。

      可选的状态码只是指定重定向响应的类型。 301 表示永久重定向:

      【讨论】:

      • 这回答了一个不同的问题。他们询问了带有和不带有 L 的重定向标志。
      猜你喜欢
      • 2011-12-23
      • 2012-02-26
      • 1970-01-01
      • 2017-06-27
      • 1970-01-01
      • 2012-01-31
      • 2010-11-19
      • 1970-01-01
      • 2019-10-26
      相关资源
      最近更新 更多