Linux lighttpd条件重写
最初,我想在我的url(lighttpd)中添加尾随/ 这可能与Linux lighttpd条件重写,linux,rewrite,lighttpd,Linux,Rewrite,Lighttpd,最初,我想在我的url(lighttpd)中添加尾随/ 这可能与 url.redirect = ( "^(.*[^/])$" => "$1/" ) 现在我需要排除一些扩展名,比如.txt、png等。我想为所有扩展名添加尾部斜杠,但这些扩展名除外,我似乎无法正常工作 在apache中,我本可以使用条件重写,但在lighttpd中,您会怎么做呢 如有任何指示,将不胜感激 谢谢您可以有多个重定向规则: url.redirect = ( "^(.*)\.(png|txt)$"
url.redirect = ( "^(.*[^/])$" => "$1/" )
现在我需要排除一些扩展名,比如.txt、png等。我想为所有扩展名添加尾部斜杠,但这些扩展名除外,我似乎无法正常工作
在apache中,我本可以使用条件重写,但在lighttpd中,您会怎么做呢
如有任何指示,将不胜感激
谢谢您可以有多个重定向规则:
url.redirect = (
"^(.*)\.(png|txt)$" => "$1.$2",
"^(.*[^/])$" => "$1/"
)
在这种情况下,它将用一个文本
.png
或.txt
匹配所有内容,然后尝试您的原始规则。只需将其组合在一起即可(已测试)
$HTTP["url"] !~ "^(.*)(\..{3}|/)$" {
url.redirect = (
".*" => "%1/"
)
}
@david这将创建永无止境的循环
"^(.*)\.(png|txt)$" => "$1.$2",
"^(.*[^/])$" => "$1/"
这将创建永久的循环
@Matthew由于您将所有内容都推到%1,因此此操作不太有效
$HTTP["url"] !~ "^(.*)(\..{3}|/)$" {
url.redirect = (
".*" => "%1/"
)
}
实际上,我正在寻找条件重写,所以它只在不是png或txt时才重写。这实际上是一个条件重定向。匹配的第一个规则是成功规则;在这种情况下,png/txt行被重写为自身,并发生重定向。如果没有发生这种情况,它将尝试第二个重定向。请注意,这是一个完整的重定向,而不是软重写。“^(.*)\(png|txt)$”=>“$1.2”是否会导致重定向循环,或者lighttpd是否会注意到并忽略?非常感谢提示..这很有效。也谢谢大卫和马修。
$HTTP["url"] !~ "^(.*)(\..{3}|/)$" {
url.redirect = (
".*" => "%1/"
)
}