在 lighttpd.conf 中使用逻辑运算符

在 lighttpd.conf 中使用逻辑运算符

我有两个子域,我想将它们重定向到同一个目录:

$HTTP["host"] =~ "sub1\.example\.com$" {
    server.document-root = "/home/adam/html/sub_domain" 
}

$HTTP["host"] =~ "sub2\.example\.com$" {
    server.document-root = "/home/adam/html/sub_domain" 
}

当然,我尝试过:

$HTTP["host"] =~ "sub1\.example\.com$" OR $HTTP["host"] =~ "sub2\.example\.com$"{
    server.document-root = "/home/adam/html/sub_domain" 
}

但得到:

2011-03-14 10:19:30: (configfile.c.855) source: /etc/lighttpd/lighttpd.conf 
    line: 199 pos: 36 parser failed somehow near here: or

这对OR(大写)or甚至是 c-style 都失败了||

有什么想法可以避免尴尬的代码重复吗?

这个问题是我发表的未答复帖子在 lighttpd 论坛中。

答案1

为什么不只是……?

$HTTP["host"] =~ "^sub(1|2)\.example\.com$" {
    server.document-root = "/home/adam/html/sub_domain" 
}

答案2

艾丽西亚的答案可能是对这个问题最好的回答,但如果有人偶然发现这个问题并且正则表达式修复不起作用——就像我以前做的那样——我想快速分享哪种解决方案对我有用:

Lighttpd 没有 AND / OR 逻辑运算符,但可以通过嵌套/链接条件获得相同的行为。

逻辑与:

condition1 {
    condition2 {
        doSomething
    }
}

→ 嵌套的 if 块相当于逻辑 AND

逻辑或:

condition1 {
    doSomething
}
condition2 {
    doSomething
}

→ 链接 if 块相当于逻辑或

if-then-elif-else 结构:

condition1 {
    doSomething1  ← then block
}
else condition2 {
    doSomething2  ← else if block
}
else {
    doSomething3  ← else block
}

取自:https://doc.callmematthi.eu/lighttpd.html

答案3

尝试 -o 进行逻辑或。尝试 -a 进行逻辑与。

另请参阅这一页了解 *nix 中的更多操作符命令。

请报告并让我们知道是否有效!

相关内容