微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么此RewriteRule需要标志[L]

如何解决为什么此RewriteRule需要标志[L]

使用此配置

<Directory "/path/to/www">
    RewriteEngine On
    RewriteRule "^v1(.*)$" "v2$1" [L]
    RewriteRule "^v2(.*)$" "/v3$1" [R=301]
</Directory>

http://localhost/v1/file.txt重定向到http://localhost/v3/file.txt

但是没有[L]标志,相同的URL重定向到http://localhost/v3/file.txt/file.txt

我不知道为什么。

v3/file.txt/file.txt很奇怪,为什么文件名重复?

谢谢!

解决方法

来自文档here

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

换句话说,[L]打破了链条,否则,将应用下一条规则。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。