为什么我访问其中一个域名用php 的$_SERVER["SERVER_NAME"] 确实得到的另一个

发布于 2022-09-04 13:43:32 字数 441 浏览 19 评论 0

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

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

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

下面是nginx的配置

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

那伤。 2022-09-11 13:43:32

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

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

把人绕傻吧 2022-09-11 13:43:32

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

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

    ~^(?<site>.+)\.uedsky\.com$
星星的轨迹 2022-09-11 13:43:32

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文