domínios com expressão regular a condizer para mod_evhost lighttpd (www.domain.com / domain.com / sub.domain.com)

StackOverflow https://stackoverflow.com/questions/261904

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu estou brincando com lighttpd em um pequeno servidor virtual privado. I dois domínios que apontam para o servidor. Eu estou usando a última versão do lighttpd e mod_evhost no Ubuntu 8.10.

  1. Eu estou tentando configurar uma regra tal que se os pedidos alguém domain.com ou www.domain.com que se servido de /webroot/domain.com/www /

  2. Se os pedidos alguém sub.domain.com que se servido de /webroot/domain.com/sub /

  3. Se os pedidos de pessoas fake.domain.com (onde /webroot/domain.com/fake / não existe) Eu gostaria que eles servido a partir < em> /webroot/domain.com/www /

O terceiro requisito não é tão importante, eu posso lidar com pessoas solicitando subdomínios que não existem a ser servido a partir da raiz de documentos do servidor de /webroot/server.com/www / , mesmo se solicitado fake.domain.com

Eu incluí as partes relevantes do meu arquivo lighttpd.conf abaixo:

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

Então, onde estou indo errado? No momento, todos os pedidos para *. Domain.com e domain.com estão sendo servido a partir das /webroot/domain.com/www /

Eu apreciaria qualquer ajuda que vocês poderiam oferecer e se eu deixei nada de fora relevante por favor me diga!

Cheers, Rob

Foi útil?

Solução

As suas expressões regulares parecem ser um pouco exagerado.

Aqui está o que eu usaria:

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

Onde:

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

Para combinar apenas sub-domínios válidos com volta queda com "www", você pode usar isto:

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

Outras dicas

Para a sua primeira, correspondente domain.com e www.domain.com : ^\b([wW]{3}\.)?[\w\d]*\.com\b$, e para o segundo, tenho a certeza se regex pode determinar se um subdomínio / página existe, como é para identificar seqüências de texto de interesse. Esperemos que irá ajudá-lo um pouco.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top