当前位置:  开发笔记 > 运维 > 正文

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

如何解决《使用正则表达式匹配域名为lighttpdmod_evhost(www.domain.com/domain.com/sub.domain.com)》经验,为你挑选了1个好方法。

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

    我正在尝试设置一条规则,如果有人请求domain.comwww.domain.com,则可以从/webroot/domain.com/www/获得服务

    同样,如果有人请求sub.domain.com,他们将从/webroot/domain.com/sub/获得服务

    如果有人要求 fake.domain.com(其中/webroot/domain.com/fake/不存在),我希望他们从/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.com .domain.comdomain.com的均来自/webroot/domain.com/www/

我很感激你们提供的任何帮助,如果我遗漏了任何相关信息,请告诉我!

干杯,罗布



1> Tomalak..:

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

这是我会用的:

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

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有