[R = 301]和[R = 301,L]之间有什么区别?

时间:2013-09-23 12:50:34

标签: apache .htaccess

任何人都可以与我分享301重定向中[R=301][R=301,L]之间的区别吗?哪个最适合重定向网址?

虽然两者都运行良好,但我注意到[R=301,L]将网址更改为新网址,而[R=301]仅重定向内容。

有人可以就此分享一些见解吗?

3 个答案:

答案 0 :(得分:13)

无论R=301 LLast标志意味着{{1}},并且当您想要标记结束特定重写规则时,应将其置于规则中。

根据official doc:

  

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

答案 1 :(得分:3)

R进行重定向,L禁止在此下面应用任何规则。如果没有L,则其他规则将应用于新网址。

官方文件说:

  

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

答案 2 :(得分:0)

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

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