PHP中获取当前页面的完整URL
封面图
•
2025-11-17
•
PHP
175
0
0
0
在 PHP 中,获取当前页面的完整 URL(包括协议、域名、路径和查询参数)可以通过组合一些超全局变量来实现。以下是一个通用的方法: ### 方法一:使用 `$_SERVER` 变量 ```php <?php $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http'; $host = $_SERVER['HTTP_HOST']; $request_uri = $_SERVER['REQUEST_URI']; $full_url = $protocol . '://' . $host . $request_uri; echo $full_url; ?> ``` ### 说明: - `$_SERVER['HTTPS']` 判断是否为 HTTPS。 - `$_SERVER['HTTP_HOST']` 获取主机名(如 `example.com`)。 - `$_SERVER['REQUEST_URI']` 获取请求的路径和查询字符串(如 `/page.php?id=1`)。 ### 示例输出: 如果访问的是 `http://example.com/page.php?id=1`,则输出: ``` http://example.com/page.php?id=1 ``` --- ### 方法二:使用 `parse_url()` 和 `$_SERVER` 如果你需要更精确地处理 URL,可以使用 `parse_url()` 函数: ```php <?php $url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; echo $url; ?> ``` --- ### 注意事项: - 如果你使用了反向代理(如 Nginx 或 Apache),可能需要使用 `X-Forwarded-Proto` 来判断是否是 HTTPS。 ```php $protocol = (isset($_SERVER['X_FORWARDED_PROTO']) && $_SERVER['X_FORWARDED_PROTO'] === 'https') ? 'https' : 'http'; ``` - `$_SERVER['REQUEST_URI']` 不包含查询参数时,也可以使用 `$_SERVER['QUERY_STRING']` 来拼接。 --- ### 总结: 推荐使用第一种方法,它简单且适用于大多数情况。如果你的环境有反向代理或负载均衡,建议检查 `X-Forwarded-*` 相关的头信息。
上一篇:
PHP正则表达式 验证电子邮件地址
下一篇:
php如何判断文件是否存在,包括本地和远程文件
标题录入,一次不能超过6条
留言
评论