Domini corrispondenti a regex per lighttpd mod_evhost (www.domain.com / domain.com / sub.domain.com)

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

  •  06-07-2019
  •  | 
  •  

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.

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

  2. Allo stesso modo, se qualcuno richiede sub.domain.com vengono serviti da /webroot/domain.com/sub/

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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top