Passende Bereiche mit regulärem Ausdruck für lighttpd mod_evhost (www.domain.com / domain.com / sub.domain.com)

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

  •  06-07-2019
  •  | 
  •  

Frage

Ich spiele etwa mit lighttpd auf einem kleinen virtuellen privaten Server. Ich zwei Domänen auf den Server verweisen. Ich verwende die neueste Version von lighttpd und mod_evhost auf Ubuntu 8.10.

  1. Ich versuche, eine Regel aufzustellen, so dass, wenn jemand fordert domain.com oder www.domain.com sie serviert bekommen von /webroot/domain.com/www /

  2. Und falls jemand fordere sub.domain.com sie serviert bekommen von /webroot/domain.com/sub /

  3. Wenn die Menschen Anfragen fake.domain.com (wobei /webroot/domain.com/fake / existiert nicht) Ich möchte sie serviert von < em> /webroot/domain.com/www /

Die dritte Anforderung ist nicht ganz so wichtig, ich mit Leuten anfordernden Subdomains umgehen kann, die vom Server Dokumentstamm von /webroot/server.com/www / ist nicht vorhanden sind, sogar wenn sie angefordert fake.domain.com

Ich habe die entsprechenden Teile meiner lighttpd.conf Datei unten enthalten:

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/"    
}

Also, wo soll ich falsch? Im Moment alle Anfragen an *. Domain.com und domain.com werden serviert von /webroot/domain.com/www /

Ich schätze würde jede Hilfe euch anbieten könnte und wenn ich aus relevant etwas übrig habe Bitte sagen Sie mir!

Cheers, Rob

War es hilfreich?

Lösung

Ihre regulären Ausdrücke scheinen ein wenig übertrieben zu sein.

Hier ist, was ich verwenden würde:

// 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/"    
}

Dabei gilt:

[^.]+ matches anything but a dot, 1..n times

Um nur gültig Subdomains mit Fall passen wieder auf „www“, können Sie diese verwenden:

// 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/"    
}

Andere Tipps

Für Ihre ersten, passende domain.com und www.domain.com : ^\b([wW]{3}\.)?[\w\d]*\.com\b$, und für die zweiten, ich bin nicht sicher, ob regex feststellen kann, ob ein Sub-Domain / Seite existiert, wie es zur Identifizierung von Textzeichenfolgen von Interesse ist. Hoffentlich wird Ihnen helfen, ein bisschen aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top