关于这个问题,搜索引擎上搜到一大片的文章,有很多问题,在这找到一篇正确的说法:http://mimiz.cn/index.php/php/php-http_host-server_name-difference/
转载一下
最近在开发站群软件,用到了根据访问域名判断子站点的相关问题。PHP获取当前域名有两个变量 HTTP_HOST 和 SERVER_NAME,我想知道两者的区别以及哪个更加可靠。
首先我想说,百度上那些转来转去的文章都是扯淡!
有说相同的,有说不同的,都没说明原因,没经过验证就互相转来转去的,浪费观众时间。
下面说说本人经过亲自验证 + 查阅官方文档 + 官方BUG列表 + 官方邮件列表 + sitepoint + webmasterworld + google的总结:
相同点:
当满足以下三个条件时,两者会输出相同信息。
1. 服务器为80端口
2. apache的conf中ServerName设置正确
3. HTTP/1.1协议规范
不同点:
1. 通常情况:
_SERVER["HTTP_HOST"] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。
_SERVER["SERVER_NAME"] 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值。
2. 当服务器为非80端口时:
_SERVER["HTTP_HOST"] 会输出端口号,例如:mimiz.cn:8080
_SERVER["SERVER_NAME"] 会直接输出ServerName值
因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT
3. 当配置文件httpd.conf中的ServerName与HTTP/1.0请求的域名不一致时:
httpd.conf配置如下:
<virtualhost *>
ServerName mimiz.cn
ServerAlias www.mimiz.cn
</virtualhost>
客户端访问域名www.mimiz.cn
_SERVER["HTTP_HOST"] 输出 www.mimiz.cn
_SERVER["SERVER_NAME"] 输出 mimiz.cn
所以,在实际程序中,应尽量使用_SERVER["HTTP_HOST"] ,比较保险和可靠。
原文网址:http://it.oyksoft.com/post/3158/
相关推荐
$_SERVER['HTTP_HOST']; localhost:80 $_SERVER['SERVER_NAME'] — 返回当前主机名。 localhost $_SERVER['QUERY_STRING']-URL中第一个问号之后的所有内容 action=du&id=9 $_SERVER['REQUEST_URI'];--这里是i而...
$_SERVER[‘REMOTE_HOST’] //当前用户主机名 $_SERVER[‘REQUEST_URI’] //URL$_SERVER[‘REMOTE_PORT’] //端口。 $_SERVER[‘SERVER_NAME’] //服务器主机的名称。 $_SERVER[‘PHP_SELF’]//正在执行脚本的...
复制代码 代码如下:function getsiteurl() { global $_SCONFIG; if(empty($_SCONFIG[‘siteallurl’])) { $uri = $_... return shtmlspecialchars(‘http://’.$_SERVER[‘HTTP_HOST’].substr($uri, 0, strrpos($uri,
$_G['siteurl'] = htmlspecialchars(‘http://’.$_SERVER['HTTP_HOST'].preg_replace(“/\/+(api)?\/*$/i”, ”, substr($_G['PHP_SELF'], 0, strrpos($_G['PHP_SELF'], ‘/’))).’/'); //站点目录 $_G['siteroot'...
//获取当前的域名:echo $_SERVER[‘SERVER_NAME’];//获取来源网址,即点击来到本页的上页网址echo $_SERVER[“HTTP_REFERER”];$_SERVER[‘REQUEST_URI’];//获取当前域名的后缀$_SERVER[‘HTTP_HOST’];//获取当前...
php $db_host=’hostname is database server ‘; $db_database=’database name’; $db_username=’username’; $db_password=’password’; $connection=mysql_connect($db_host,$db_username,$db_password);//...
文件夹目录$imgurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/] ?)$/', '/', $_SERVER['PHP_SELF']).'u/'.$newname;里面的u/ 换成你修改后的即可Google广告/统计代码自行修改下...
<?php $Host="local host" $User="username" //... // Link to mySQL database server $Link_ID=mysql_connect($Host, $User, $Password) if (!$Link_ID) { halt("cannot use database: ".$User) }
基于CF Image Hosting ...$imgurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/] ?)$/', '/', $_SERVER['PHP_SELF']).'u/'.$newname; 里面的u/ 换成你修改后的即可 Google广告/统计代码自行修改下...
$XNova_Host = $_SERVER['HTTP_HOST']; $XNova_Script = $_SERVER['SCRIPT_NAME']; $Uri_Array = explode ('/', $XNova_Script); // On vire le script array_pop($Uri_Array); $XNova_URI = implode ('/', $Uri_...
$db_name='host'; //数据库名 $db_charset='UTF8'; $safe = '123456';//此处为安全码,不走数据库 配置根目录下update.php $file_dir = 'http://你的域名/update'; //远程升级补丁存放目录 update为补丁存放目录 ...
$db_name=\\\\’host\\\\’; //数据库名 $db_charset=\\\\’UTF8\\\\’; $safe = \\\\’123456\\\\’;//此处为安全码,不走数据库 配置根目录下update.php $file_dir = \\\\’http://你的域名/update\\\\’; //...
php源码 最新漂亮简洁大气的域名授权系统PHP...$db_name=\’host\’; //数据库名 $db_charset=\’UTF8\’; $safe = \’123456\’;//此处为安全码,不走数据库 4、配置根目录下update.php $file_dir = \’http://你的域
$db_name=’host’; //数据库名 $db_charset=’UTF8′; $safe = ‘123456’;//此处为安全码,不走数据库 配置根目录下update.php $file_dir = ’http://www.sq.top/upgrade’; //远程升级补丁存放目录 upgrade...
Thinkphp3.0 + SqlServer 2005 本人由于最近项目中使用的数据库是Sql 2005的,经过测算官方的无法正常使用,所以,我就重新写了 底层的数据库抽象层。 php 5.2.6版本以下,可以用php官方的接口连接数据库,无需...
mysql_connect 建立一个与MySQL服务器的连接 语法 resource mysql_connect(string server[,string usingname[,string password[, bool new_link[,int client_flags]]]]) eg: 复制代码 代码如下: $DB_HOST =”...
//define('__WEBCOMMON_ROOT', $_SERVER["DOCUMENT_ROOT"] .'/../web_common5.8'); //web_common在网站目录外 该语句需要设定正确的路径来调用ArthurXF框架底层。如果您的服务器为虚拟主机,您不需要进行任何设置; ...
代理脚本获取 "/$PROXYNAME/" 之后的所有内容并将其附加到 $CMS_SERVERHOST 代理脚本向后端服务器上的结果 URL $CMS_SERVERHOST/xx 发出请求 响应被定向回浏览器 要求 PHP Apache mod_rewrite 模块 Apache mod_...
Nginx反向代理 server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; root E:\yuehou\git\web-h5\dist; location / { try_files $uri $uri/ /index....
Mail server, DNS server, FTP server, Proxy server... All in one! This program will help you to open all the possibilities Internet can offer for your company - public site, provide Internet access ...