代码之家  ›  专栏  ›  技术社区  ›  Rob Burke

将域与lighttpd mod_evhost的regex匹配(www.domain.com/domain.com/sub.domain.com)

  •  3
  • Rob Burke  · 技术社区  · 16 年前

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

    1. 我想建立一个规则,如果有人要求的话 域名网 www.域名网 他们是从 /网址:webroot/domain.com/www/

    2. 同样,如果有人要求 域名网 他们是从 /webroot/domain.com/sub/

    3. 如果有人要求 Fak.DimaNo.com (何处) /webroot/domain.com/fake/ 不存在)我要从 /网址:webroot/domain.com/www/

    第三个要求并不那么重要,我可以从服务器文档根目录 /网址:webroot/server.com/www/ 即使他们要求 Fak.DimaNo.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/"    
    }
    

    那我哪里出错了?目前,所有请求 *域名网站 域名网 正在从 /网址:webroot/domain.com/www/

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

    干杯, 抢劫

    2 回复  |  直到 12 年前
        1
  •  5
  •   Tomalak    16 年前

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

    以下是我将要使用的内容:

    // 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/"    
    }
    
        2
  •  1
  •   Anders    16 年前

    对于你的第一个,匹配 域名网 www.域名网 : ^\b([wW]{3}\.)?[\w\d]*\.com\b$ 对于第二个,我不确定regex是否可以确定是否存在子域/页面,因为它用于识别感兴趣的文本字符串。希望这会对你有所帮助。