看到网上有篇文章,说是$_SERVER变量中的HTTP_HOST与SERVER_NAME不一样,打开网址后HTTP_HOST是全域名,而SERVER_NAME会显示根域名。
但是我采用了phpinfo看了一下,HTTP_HOST和SERVER_NAME是相同值,而并非是所说的不一样。
代码如下:
- <?php
- phpinfo();
上面这段简单的代码里会显示$_SERVER变量的内容,搜索一下,HTTP_HOST与SERVER_NAME是一样的,都是www.neatstudio.com,当然这时候,我的路径是http://www.neatstudio.com/info.php,于是我尝试用http://neatstudio.com/info.php访问时,这两个值还是一样,当然都变成了neatstudio.com。
于是我翻开了手册想看看是怎么回事,为什么会有人说不一样。
手册上这么说:
- '
SERVER_NAME
' -
The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host.
- '
HTTP_HOST
' -
Contents of the Host: header from the current request, if there is one.
看了上面的解释也基本上可以断定它基本是一样的,除非同一台服务器只有一个网站,但SERVER_NAME却与HOST不一样,或许会出现不同值。如果是虚拟主机,默认会以虚拟主机的值为准。为了测试,我在本地做了一个测试。
在hosts文件里加了127.0.0.1 www.neatcn.com 127.0.0.1 neatcn.com对应两个域名【强制在本地指定,否则会到使用域名真实IP】
然后在virtual host里,更换不同的ServerName 为neatcn.com和www.neatcn.com,但结果,都是根据访问路径来的,不管使用何种域名,HTTP_HOST和SERVER_NAME都是一致的,与访问路径中的hostname一致。
再对应一下那篇文章 ,由此基本可以鉴定那是一个SEO的文章,因为他在同一篇文章里介绍了两个域名还都不一致。唉。。。SEO沦落到如此地步了,刚开始看到的时候,我本来以为很激动的,我想着以后取根域名就方便了。不需要象现在还要根据不同的域名根来取根域名。。。