2012-02-24 21 views
1

我希望Lighttpd为内部客户端显示不同的页面,并为其他人显示默认页面。为内部LAN客户端设置不同的Lighttpd虚拟主机 - 可能只需要RegEx ...?

之间thesetwo链接,我有我想做什么的想法,但我不知道RegEx我需要限制客户端使用[http://] 192.168.0的主机名。或[http://] 192.168。?。?到另一个页面。我一直在使用中lighttpd.conf下面的代码:

server.document-root  = "/var/www/sites" 

$HTTP["host"] == "RegExHere" { 
     server.document-root = "/var/www/setup" 
} 

...其中的“RegExHere”我已经尝试了多种尝试,如:

192\.168\.0\.\d{1,3}(\s|$))+ 
192\.168\. 
[192.168.[0-9]+.] 
192\.168\.[0-9]+.[0-9]+$ 

...和各种它们的组合。我不知道我是否接近,但无论它只显示默认页面。

任何人都可以告诉我哪里可能会出错吗?

在此先感谢!

回答

1

您必须使用=〜语法来匹配正则表达式。将$HTTP["host"] == "RegExHere"更改为$HTTP["host"] =~ "RegExHere",其中一个正则表达式应该可以工作。 ^192\.168\.\d{1,3}\.\d{1,3}$应该这样做。

发现这篇文章就可以了http://blog.evanweaver.com/2006/06/07/regular-expressions-in-lighttpd-host-redirects/

编辑:我认为你需要使用$ HTTP [“REMOTEIP”]而不是$ HTTP [“主机”],它看起来像你可以不用正则表达式。

$HTTP["remoteip"] == "10.0.0.0/8" { url.access-deny = ("") } 

$HTTP["remoteip"] == "127.0.0.0/8" { url.access-deny = ("") } 

http://forum.lighttpd.net/topic/27

+0

这真棒Hersha谢谢。 现在似乎很明显,只是错过了这么简单的事情! – drewstiff 2012-02-24 14:49:55

+0

@drewstiff嘿我更新了我的答案。我想你也使用了错误的$ HTTP变量。 – Hersha 2012-02-24 14:51:31

+0

虽然这也可以正常工作,但当我想要通过服务器的内部IP访问时显示专家页面,这种方式如果我确实想访问外部网站,我仍然可以使用实际的域名。 尽管感谢您的提醒,但我会记下这一点供将来参考! – drewstiff 2012-02-24 15:02:53