将.cn .jp .ch .eu .fr重定向到lighttpd上的domain.com

时间:2010-01-15 18:35:08

标签: regex lighttpd

我想将多个域重定向到我们的网络地址。

域名具有以下扩展名:

  • CN
  • JP
  • CH
  • EU
  • FR
www.domain.fr应指向www.domain.com - sub.domain.fr应指向sub.domain.com,扩展后的路径应保持不变,以便www.domain.fr/foo指向www.domain.com/foo

FR就是一个例子。它应该按照解释的方式适用于所有扩展。对我来说,无论我们明确写(cn | jp | ch | eu | fr)还是设置通配符都无关紧要。

我尝试了以下无效的方法:

$HTTP["host"] =~ "(*.)?domain\.(*)(/*)?$" {
     url.redirect = ("^/(.*)" => "http://%1.domain.com%3")
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你的正则表达式出了点问题。 (*)没有任何意义。我认为你更熟悉 glob 语法。记住:

* (in glob) === .* (in regexp)

基本上'.'表示任何内容,'*'表示任何事情的零次或多次。所以我想你想要:

$HTTP["host"] =~ "(.*\.)?domain\.(.*)$" {
    url.redirect = ("^(/.*)" => "http://%1.domain.com$1")
}

请注意,普通点需要转义'\.',因为'.'表示任何字符。

另外,请记住,在lighttpd语法中,$HTTP["host"]变量不包含任何路径。您在url.redirect部分进行路径提取,而不是$HTTP["host"]部分!