Dominios coincidentes con expresiones regulares para lighttpd mod_evhost (www.domain.com / domain.com / sub.domain.com)

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

  •  06-07-2019
  •  | 
  •  

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.

  1. 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/

  2. Del mismo modo, si alguien solicita sub.domain.com se les sirve desde /webroot/domain.com/sub/

  3. 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

¿Fue útil?

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 : ^ \ b ([wW] {3} \.)? [\ w \ d] * \. com \ b $ , y para el segundo, no estoy seguro si regex puede determinar si existe un subdominio / página, ya que es para identificar cadenas de texto de interés. Espero que eso te ayude un poco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top