一路の数字花园

Back

通常来说,网站会通过判断内容中的链接是内链(指向同一网站内其他页面的链接,即相同域名或在允许的域名列表中)还是外链(指向非本网站域名的链接,即域名不在白名单中)来采取不同的处理方式。在代码中,判断内外链的常见方法是:$host = $_SERVER['SERVER_NAME'];

然而,当使用 Nginx 服务器时,可能会出现 $_SERVER['SERVER_NAME'] 返回值不为预期的主机域名的情况,这是由于 Nginx 的重定向机制导致的。

Nginx 允许为一个 URL 配置多个重定向域名(通过配置文件中的 server_name),而 $_SERVER['SERVER_NAME'] 默认会返回 server_name 列表中的第一个值。如果该值是重定向域名而非目标域名,就会导致匹配错误。

解决办法:调整 Nginx 配置文件中 server_name 的值顺序,将目标域名置于首位,重定向域名移至其后。

下面以 宝塔 +Nginx 为例:

fix-nginx-server-name-redirect
http://www.1lu.xyz/blog/fix-nginx-server-name-redirect
Author Luyi
Published at 2025年5月18日
Comment seems to stuck. Try to refresh?✨