我有两个子域,我想将它们重定向到同一个目录:
$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 }