gpt4 book ai didi

regex - 为 lighttpd mod_evhost (www.domain.com/domain.com/sub.domain.com) 使用正则表达式匹配域

转载 作者:行者123 更新时间:2023-12-01 11:10:39 27 4
gpt4 key购买 nike

我正在玩 lighttpd在小型虚拟专用服务器上。我两个域指向服务器。我在 Ubuntu 8.10 上使用最新版本的 lighttpd 和 mod_evhost。

  1. 我正在尝试设置一个规则,这样如果任何人请求 domain.comwww.domain.com,他们就会得到 的服务/webroot/domain.com/www/

  2. 同样,如果有人请求 sub.domain.com,他们会从 /webroot/domain.com/sub/

  3. 如果人们请求 fake.domain.com(其中 /webroot/domain.com/fake/ 不存在),我希望他们从 < em>/webroot/domain.com/www/

第三个要求不是那么重要,我可以处理那些请求不存在的子域的人,这些子域从 /webroot/server.com/www/ 的服务器文档根目录提供,甚至如果他们请求 fake.domain.com

我在下面包含了我的 lighttpd.conf 文件的相关部分:

server.document-root = "/webroot/server.com/www/"

// regex to match sub.domain.com
$HTTP["host"] =~ "\b[a-zA-Z]\w*\.\b[a-zA-Z]\w*\.\b[a-zA-Z]\w*" {
evhost.path-pattern = "/webroot/%0/%3/"
}

// regex to match domain.com
$HTTP["host"] =~ "\b[a-zA-Z]\w*\.\b[a-zA-Z]\w*" {
evhost.path-pattern = "/webroot/%0/www/"
}

那么我哪里错了?目前,所有对 *.domain.comdomain.com 的请求都由 /webroot/domain.com/www/ 提供

如果你们能提供任何帮助,我将不胜感激,如果我遗漏了任何相关内容,请告诉我!

干杯,罗布

最佳答案

你的正则表达式似乎有点过头了。

这是我会用到的:

// regex to match sub.domain.com
$HTTP["host"] =~ "^[^.]+\.[^.]+\.[^.]+$" {
evhost.path-pattern = "/webroot/%0/%3/"
}

// regex to match domain.com
$HTTP["host"] =~ "^[^.]+\.[^.]+$" {
evhost.path-pattern = "/webroot/%0/www/"
}

哪里:

[^.]+ matches anything but a dot, 1..n times

要仅匹配有效的子域并回退到“www”,您可以使用:

// default: route everything to "www"
$HTTP["host"] =~ "([^.]+\.)?domain\.com$" {
evhost.path-pattern = "/webroot/%0/www/"
}

// specific regex overwrites "path-pattern" for valid sub-domains only
$HTTP["host"] =~ "^(valid1|valid2|sub)\.domain\.com$" {
evhost.path-pattern = "/webroot/%0/%3/"
}

关于regex - 为 lighttpd mod_evhost (www.domain.com/domain.com/sub.domain.com) 使用正则表达式匹配域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/261904/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com