使用 lighttpd mod_evhost 的正则表达式匹配域 (www.domain.com/domain.com/sub.domain.com)
我正在小型虚拟专用服务器上使用 lighttpd 。 我有两个域指向服务器。 我在 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/ 不存在),我希望他们从 >/webroot/domain.com/www/
第三个要求并不是那么重要,我可以处理请求不存在的子域的人从服务器文档根目录 /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/ 提供服务
我很感激你们能提供的任何帮助,如果我遗漏了任何相关内容,请告诉我!
干杯, 抢
I'm playing about with lighttpd on a small virtual private server. I two domains pointing to the server. I am using the latest version of lighttpd and mod_evhost on Ubuntu 8.10.
I'm trying to set up a rule such that if anyone requests domain.com or www.domain.com they get served from /webroot/domain.com/www/
Similarly, if anyone requests sub.domain.com they get served from /webroot/domain.com/sub/
If people requests fake.domain.com (where /webroot/domain.com/fake/ does not exist) I would like them served from /webroot/domain.com/www/
The third requirement isn't quite so important, I can deal with people requesting subdomains that don't exist being served from the server document root of /webroot/server.com/www/ even if they requested fake.domain.com
I've included the relevant parts of my lighttpd.conf file below:
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/"
}
So where am I going wrong? At the moment, all requests to *.domain.com and domain.com are being served from /webroot/domain.com/www/
I'd appreciate any help you guys could offer and if I've left anything relevant out please tell me!
Cheers,
Rob
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的正则表达式似乎有点过头了。
这是我将使用的内容:
其中:
要仅匹配有效的子域并回退到“www”,您可以使用以下内容:
Your regexes seem to be a bit overdone.
Here is what I would use:
where:
To match only valid sub domains with fall back to "www", you can use this:
对于第一个,匹配 domain.com 和 www.domain.com:
^\b([wW]{3}\.)?[\w \d]*\.com\b$
,对于第二个,我不确定正则表达式是否可以确定子域/页面是否存在,因为它用于识别感兴趣的文本字符串。 希望这会对您有所帮助。For your first one, matching domain.com and www.domain.com:
^\b([wW]{3}\.)?[\w\d]*\.com\b$
, and for the second one, I am unsure if regex can determine if a subdomain/page exists, as it is for identifying strings of text of interest. Hopefully that will help you out a bit.