Linux lighttpd条件重写

Linux lighttpd条件重写,linux,rewrite,lighttpd,Linux,Rewrite,Lighttpd,最初,我想在我的url(lighttpd)中添加尾随/ 这可能与 url.redirect = ( "^(.*[^/])$" => "$1/" ) 现在我需要排除一些扩展名,比如.txt、png等。我想为所有扩展名添加尾部斜杠,但这些扩展名除外,我似乎无法正常工作 在apache中,我本可以使用条件重写,但在lighttpd中,您会怎么做呢 如有任何指示,将不胜感激 谢谢您可以有多个重定向规则: url.redirect = ( "^(.*)\.(png|txt)$"

最初,我想在我的url(lighttpd)中添加尾随/

这可能与

    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/" 
  )
}