今天google了一下, 把长久以来很想做的一个apache VirtualHost配置搞定了.
基本功能是这样的: 在地址栏输入sandbox能访问我建在原来localhost下的document root/sandbox文件夹.
分开来,包括了两大部分: 将sandbox解析到本机(http request给Apache); 然后Apache根据server name返回内容.
解析sandbox
当你往浏览器地址栏里面输入http://sandbox/的时候, 浏览器会把sandbox作为一个域名, 查询与之相关联的IP. 浏览器首先去查看系统的host文件有没有列出这个域名. 如果有, 将直接返回host文件里的IP. 没有, 则要找网络连接里面配置的DNS服务器查询IP.
我要达到的目的让浏览器查询sandbox时返回本机IP 127.0.0.1, 最简单的办法就是修改host文件啦.
host文件在我的系统(Vista)的C:\Windows\System32\drivers\etc内. 用记事本打开, 在文件末端添加一行:
127.0.0.1 sandbox
这样浏览器就会将sandbox指向127.0.0.1.
配置Apache
浏览器把http请求顺利的转到了本机, 接下来应该是Apache忙活了. 为了让Apache找到sandbox对应的本地目录, 就需要配置一个VirtualHost. 我的配置是这样的:
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
DocumentRoot "F:/web"
ServerName localhost
</VirtualHost>
<VirtualHost 127.0.0.1:80>
DocumentRoot "F:/web/sandbox"
ServerName sandbox
</VirtualHost>
具体配置说明去看文档, 这里就不讲了. 上面配置的意思就是127.0.0.1下域名为localhost的内容在F:/web, 而sandbox内容在F:/web/sandbox.
到这里, 浏览器就能收到Apache的输出, 显示存在F:/web/sandbox下的内容了.
未解决的问题
host文件似乎不能用将域名绑定到一个端口上去. 比如我尝试下面的配置就失败了:
127.0.0.1:8000 jira
http://jira/不会连接到我的Tomcat上, 而是很”智能”地跑到jira.com去了-_-!!!也许这种问题需要其它的解决方案咯.