Domini corrispondenti a regex per lighttpd mod_evhost (www.domain.com / domain.com / sub.domain.com)
Domanda
Sto giocando con lighttpd su un piccolo server privato virtuale. Ho due domini che puntano al server. Sto usando l'ultima versione di lighttpd e mod_evhost su Ubuntu 8.10.
-
Sto cercando di impostare una regola in modo tale che se qualcuno richiede domain.com o www.domain.com vengono serviti da /webroot/domain.com/www /
-
Allo stesso modo, se qualcuno richiede sub.domain.com vengono serviti da /webroot/domain.com/sub/
-
Se le persone richiedono fake.domain.com (dove /webroot/domain.com/fake/ non esiste), vorrei che fossero servite da < em> /webroot/domain.com/www /
Il terzo requisito non è così importante, posso gestire anche le persone che richiedono sottodomini che non esistono e che vengono servite dalla radice del documento server di /webroot/server.com/www/ se hanno richiesto fake.domain.com
Di seguito ho incluso le parti pertinenti del mio file 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/"
}
Quindi dove sbaglio? Al momento, tutte le richieste a * .domain.com e domain.com sono state inviate da /webroot/domain.com/www/
Gradirei qualsiasi aiuto che voi ragazzi potreste offrire e se ho lasciato fuori qualcosa di rilevante, per favore, dimmelo!
Saluti, Rob
Soluzione
Le tue regex sembrano essere un po 'esagerate.
Ecco cosa vorrei usare:
// 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/"
}
dove:
<*>Per abbinare solo sottodomini validi con fallback a " www " ;, puoi utilizzare questo:
<*>Altri suggerimenti
Per il tuo primo, corrispondenti a domain.com e www.domain.com : ^ \ b ([wW] {3} \.)? [\ w \ d] * \. com \ b $
, e per il secondo, non sono sicuro che regex possa determinare se esiste un sottodominio / pagina, come lo è per identificare stringhe di testo di interesse. Speriamo che ti possa aiutare un po '.