domínios com expressão regular a condizer para mod_evhost lighttpd (www.domain.com / domain.com / sub.domain.com)
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.
-
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 /
-
Se os pedidos alguém sub.domain.com que se servido de /webroot/domain.com/sub /
-
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
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.