问题描述
使用此配置
<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]打破了链条,否则,将应用下一条规则。