lighttpd mod_evhost(www.domain.com / domain.com / sub.domain.com)の正規表現に一致するドメイン
質問
小さな仮想プライベートサーバーで lighttpd で遊んでいます。サーバーを指す2つのドメイン。 Ubuntu 8.10で最新バージョンのlighttpdとmod_evhostを使用しています
-
誰かが domain.com または www.domain.com をリクエストすると、から配信されるようにルールを設定しようとしています/webroot/domain.com/www /
-
同様に、誰かが sub.domain.com をリクエストすると、 /webroot/domain.com/sub /
-
人々が fake.domain.com ( /webroot/domain.com/fake / が存在しない)をリクエストした場合、< em> /webroot/domain.com/www /
3番目の要件はそれほど重要ではありません。 /webroot/server.com/www / のサーバードキュメントルートから提供される存在しないサブドメインを要求する人々に対処できます彼らが fake.domain.com
をリクエストした場合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/"
}
では、どこが間違っているのでしょうか?現在、 *。domain.com および domain.com へのすべてのリクエストは、 /webroot/domain.com/www / から処理されています
皆さんからの支援をお願いします。関連するものを残した場合は教えてください!
乾杯、 ロブ
解決
正規表現は少しやり過ぎているようです。
使用するものは次のとおりです。
// 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/"
}
where:
<*>&quot; www&quot;にフォールバックして有効なサブドメインのみを一致させるには、これを使用できます:
<*>他のヒント
最初の domain.com と www.domain.com の一致: ^ \ b([wW] {3} \。)? [\ w \ d] * \。com \ b $
。2つ目は、関心のあるテキストの文字列を識別するために、regexがサブドメイン/ページが存在するかどうかを判断できるかどうか不明です。少しでもお役に立てば幸いです。