Regex 适用于www和非www域的正则表达式解决方案

Regex 适用于www和非www域的正则表达式解决方案,regex,lighttpd,vhosts,Regex,Lighttpd,Vhosts,我想得到一些帮助 工作代码:regex与xxx.domain.com匹配 $HTTP["host"] =~ "^[^.]+\.domain\.com$" { evhost.path-pattern = vhosts_dir + "/company/domain.com/subdomains/%3/" } Www不工作:(regex匹配domain.com正在工作) 如何让www使用第二个代码示例 ^(^ www.)example.com$ 谢谢 Magnus只要匹配\bdomain.c

我想得到一些帮助

工作代码:regex与xxx.domain.com匹配

$HTTP["host"] =~ "^[^.]+\.domain\.com$" {
    evhost.path-pattern = vhosts_dir + "/company/domain.com/subdomains/%3/"
}
Www不工作:(regex匹配domain.com正在工作)

如何让www使用第二个代码示例

^(^ www.)example.com$

谢谢


Magnus

只要匹配
\bdomain.com$
就足够了,除非您担心出现“假域名.com”。然后您可以编写
^(?:[^.]+\)*domain\.com$


您是否已规范化为小写?

在您的第一个regexp中,+后的域是什么?这将匹配域名nnnnn。另外,在第二个示例中,您丢失了字符串^1开头的锚点。这些让我觉得您可能无意中在更改Stackover flow问题的内容时出错-您能检查一下吗?我现在已经更改了代码示例。更好?谢谢tchrist提供的代码来防止假冒域名。我从来不知道这种情况。我是一个新手,你说规范化为小写是什么意思?^(?:www |[^.]+\)*domain\.com$一个坏例子,但我希望你理解我的想法。如果我改变两者的顺序,你的解决方案对www有效,但子域的代码就不起作用了。我被卡住了:(
else $HTTP["host"] =~ "^([^.]+\.)?domain\.com$" {
 evhost.path-pattern = vhosts_dir + "/company/domain.com/public/"
}