事情起因是因为公司服务器没有采用vhost方式,而是直接把一个整个站点监听在IP:80上,假定IP为1.2.3.4,公司网站域名为abc.com。
这样我们不论是输入http://abc.com还是http://1.2.3.4都可以正常访问公司网站。
而不知哪个搞笑的家伙竟然把另外一个毫不相干的域名def.com也解析到了1.2.3.4。这样通过http://def.com访问也是访问到了我们公司的网站。
更搞笑的是,这个def.com的域名以前跑的是一个做与我们类似业务的公司的网站,于是这家公司的倒霉客户找到我们这里来,问这到底是为什么,是否def.com被我们公司收购了云云。
于是一边诅咒那个缺德的域名管理员,一方面想办法要让http://def.com访问不到我们的站点,首先我们不可能控制这个def.com的解析,那就只能在我们自己服务器上作手脚了,我想到的是利用Apache的mod_rewrite来实现。
准备工作不详细写了,不过是Load相应模块,设置AllowOveride All等。而详细实现也只有简单的几句代码,在站点根目录建立.htaccess文件,写入如下内容:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !www.abc.com [NC]
RewriteCond %{HTTP_HOST} !abc.com [NC]
RewriteCond %{HTTP_HOST} !1.2.3.4 [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^.* - [F,L]
这样实现的结果是只能通过www.abc.com,abc.com,1.2.3.4来访问站点,用其他的HOST访问都会显示403Forbidden。
备忘:{HTTP_HOST}代表HTTP协议GET动作同时传递的Host的值,[NC]代表忽略大小写;[F]代表动作为禁止;[L]代表最终匹配。
该练习一下正则表达的功底了,越来越多的地方要用到了。
文章分类
- Cartoon and Anime (12)
- FreeBSD (12)
- Game (3)
- Hardware (12)
- IT (3)
- Joke (15)
- Life goes on (55)
- Linux (14)
- Music (9)
- Networking (35)
- Programming (4)
- Software (17)
- solaris (2)
- tips (1)
- Weblog (41)
- Windows (22)
按月归档
- May 2008 (3)
- April 2008 (3)
- March 2008 (3)
- February 2008 (3)
- January 2008 (2)
- December 2007 (3)
- November 2007 (10)
- October 2007 (12)
- September 2007 (8)
- August 2007 (7)
- July 2007 (10)
- June 2007 (12)
- May 2007 (14)
- April 2007 (14)
- March 2007 (18)
- February 2007 (11)
- January 2007 (8)
- December 2006 (12)
- November 2006 (13)
- October 2006 (5)
- September 2006 (9)
- August 2006 (13)
- July 2006 (13)
- June 2006 (16)
- May 2006 (21)
Weblog







