PHP如何获取含查询参数的完整URL?$_SERVER使用问题
解决PHP获取带查询参数的完整URL问题
你的问题核心是:$_SERVER["SCRIPT_NAME"]本身就不包含URL的查询参数部分,它只存储当前执行的脚本文件路径(比如/index.php),所以你之前的代码自然拿不到?page=home这类参数。下面给你两种直接可行的修改方案:
方案一:手动拼接脚本名和查询参数
保留你原本截取脚本名的逻辑,再判断并拼接查询参数:
// 截取当前脚本文件名(和你原来的代码一致) $curPageName = substr($_SERVER["SCRIPT_NAME"], strrpos($_SERVER["SCRIPT_NAME"], "/") + 1); // 如果存在查询参数,拼接到脚本名后面 if (!empty($_SERVER["QUERY_STRING"])) { $curPageName .= "?" . $_SERVER["QUERY_STRING"]; }
输出链接的代码不用改,依然是:
<a href="https://example.com/<?php echo $curPageName; ?>" title="Check this site in English">查看英文站点</a>
方案二:直接使用$_SERVER["REQUEST_URI"](更简洁)
$_SERVER["REQUEST_URI"]会直接返回域名后的完整路径,包括脚本名和所有查询参数(比如/index.php?page=home),直接用它更省心:
$fullPath = $_SERVER["REQUEST_URI"];
输出链接时直接拼接域名和这个路径:
<a href="https://example.com<?php echo $fullPath; ?>" title="Check this site in English">查看英文站点</a>
注意:如果你的网站部署在子目录下(比如
https://example.com/blog/index.php?page=home),REQUEST_URI会自动包含/blog/index.php?page=home,直接拼接域名就能得到正确的完整URL,不需要额外处理。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

