Dominios coincidentes con expresiones regulares para lighttpd mod_evhost (www.domain.com / domain.com / sub.domain.com)
Pregunta
Estoy jugando con lighttpd en un pequeño servidor privado virtual. Tengo dos dominios apuntando al servidor. Estoy usando la última versión de lighttpd y mod_evhost en Ubuntu 8.10.
-
Estoy tratando de configurar una regla de manera que si alguien solicita dominio.com o www.dominio.com reciban servicio de /webroot/domain.com/www/
-
Del mismo modo, si alguien solicita sub.domain.com se les sirve desde /webroot/domain.com/sub/
-
Si las personas solicitan fake.domain.com (donde /webroot/domain.com/fake/ no existe) me gustaría que se les sirviera de < em> /webroot/domain.com/www/
El tercer requisito no es tan importante, puedo tratar con personas que solicitan subdominios que no existen desde la raíz del documento del servidor de /webroot/server.com/www/ incluso si solicitaron fake.domain.com
He incluido las partes relevantes de mi archivo lighttpd.conf a continuación:
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/"
}
Entonces, ¿a dónde me estoy yendo mal? En este momento, todas las solicitudes a * .domain.com y domain.com se están atendiendo desde /webroot/domain.com/www/
Agradecería cualquier ayuda que pudieran ofrecerme y si he dejado algo relevante, ¡díganme!
Saludos, Rob
Solución
Tus expresiones regulares parecen estar un poco exageradas.
Esto es lo que usaría:
// regex to match sub.domain.com
$HTTP["host"] =~ "^[^.]+\.[^.]+\.[^.]+[^.]+ matches anything but a dot, 1..n times
quot; {
evhost.path-pattern = "/webroot/%0/%3/"
}
// regex to match domain.com
$HTTP["host"] =~ "^[^.]+\.[^.]+// default: route everything to "www"
$HTTP["host"] =~ "([^.]+\.)?domain\.com<*>quot; {
evhost.path-pattern = "/webroot/%0/www/"
}
// specific regex overwrites "path-pattern" for valid sub-domains only
$HTTP["host"] =~ "^(valid1|valid2|sub)\.domain\.com<*>quot; {
evhost.path-pattern = "/webroot/%0/%3/"
}
quot; {
evhost.path-pattern = "/webroot/%0/www/"
}
donde:
<*>Para hacer coincidir solo subdominios válidos con retroceso a " www " ;, puede usar esto:
<*>Otros consejos
Para el primero, haciendo coincidir dominio.com y www.dominio.com :