nginx - 为什么我访问其中一个域名用php 的$_SERVER["SERVER_NAME"] 确实得到的另一个
伊谢尔伦
伊谢尔伦 2017-04-11 09:59:00
[PHP讨论组]

主域名比如是:ol.com
本来正常来说

 B域名访问  --> $_SERVER["SERVER_NAME"]  --> B.ol.com
 A域名访问  --> $_SERVER["SERVER_NAME"]  --> A.ol.com

但是今天发现的一个很奇怪的问题,我有一个主域名,两个子域名,都指向的同一个服务器。
然后我通过B域名访问,又通过php的$_SERVER["SERVER_NAME"] 打印出来的确是A域名的地址。

下面是nginx的配置

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(3)
伊谢尔伦

$_SERVER['SERVER_NAME'] 获取的是web服务器中配置的域名
$_SERVER['HTTP_HOST'] 获取的是,用户访问时的域名

当配置中有多个域名是,请使用 $_SERVER['HTTP_HOST'] 获得当前使用的域名。

ringa_lee

正确的是通过 $_SERVER['HTTP_HOST'] 来获取host

server_name 获取的是nginx里server_name配置的项,有可能是正则表达式或多个域名,如:

    ~^(?<site>.+)\.uedsky\.com$
天蓬老师

其实你应该用的是$_SERVER["HTTP_HOST"],而$_SERVER["SERVER_NAME"]是在


server_name中获取的。而指定了多个域名作为server_name,Nginx总会以第一个遇到的为准。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号