如何在 PHP 中获取完整的 URL,而不仅仅是其中的一部分? [复制]

Posted

技术标签:

【中文标题】如何在 PHP 中获取完整的 URL,而不仅仅是其中的一部分? [复制]【英文标题】:How can I get the full URL in PHP, not just part of it? [duplicate] 【发布时间】:2013-09-15 16:02:50 【问题描述】:

这是我当前的 URL 结构 http://wp.raddyx.in/consultant-dietitians/staff-single/#Fiona%20Brown

我正在使用echo $url=$_SERVER['REQUEST_URI'];

但是它只显示/consultant-dietitians/staff-single/,我想在其中获取完整的 URL。

【问题讨论】:

这听起来像是一个 XY 问题 meta.stackexchange.com/questions/66377/what-is-the-xy-problem - 请告诉我们关于 X,而不是 Y。 【参考方案1】:

使用$_SERVER["SERVER_NAME"]获取主机名wp.raddyx.in

使用 $_SERVER["HTTPS"] 检查 http 与 https。

您可能还需要$_SERVER["SERVER_PORT"] 以及可能出现在 URL 中的其他一些其他内容(例如 php_AUTH_USER

您无法获取 URL (#Fiona%20Brown) 的哈希部分,因为哈希仅在客户端。它们不会发送到服务器。

相关手册页:http://php.net/manual/en/reserved.variables.server.php

【讨论】:

缺少#Fiona%20Brown 谢谢,但我正在寻找的是包含#string 即wp.raddyx.in/consultant-dietitians/staff-single/#Fiona%20Brown 的url,目前我正在达到wp.raddyx.in/consultant-dietitians/staff-single 看到我原来的URL 中缺少# 之后的字符串! ! 就像我说的,这是不可能的。服务器永远不会看到哈希部分。为什么需要哈希部分? 好吧,如果我不使用哈希部分,我正在使用 wordpress,那么我会收到一个找不到页面的错误!! @DebakantMohanty 那么我建议你使用mod_rewrite【参考方案2】:

使用$_SERVER[HTTP_HOST]:

$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

【讨论】:

好吧,使用“http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]”我只能到达wp.raddyx.in/consultant-dietitians/staff-single,但我想得到#之后的字符串,即wp.raddyx.in/consultant-dietitians/staff-single/#Fiona%20Brown @novo, echo "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 为我生成 http://localhost/test.php。我的 PHP 版本一定很神奇 :) @Novocaine88 可以表示法 @davidkonrad 浏览器实际上不会将哈希(#)之后的任何内容发送到服务器,因为它是在浏览器中解析的。 我的错,我假设在数组中使用引号,例如['HTTP_HOST'] 这不起作用。我急忙对你没有这样做的事实感到茫然,在这种情况下,这很好。【参考方案3】:
echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

【讨论】:

以上是关于如何在 PHP 中获取完整的 URL,而不仅仅是其中的一部分? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Node.js 查询 mysql 数据库以通过 url 中的名称获取特定用户(字段),而不仅仅是通过 ID

如何在apache中重写url

如何在 Windows/IIS 服务器上获取当前页面的完整 URL?

PHP中获取当前页面的完整URL

PHP中获取当前页面的完整URL

PHP中获取当前页面的完整URL