如何在PHP中获取当前页面的URL [重复]

Posted

技术标签:

【中文标题】如何在PHP中获取当前页面的URL [重复]【英文标题】:How to get URL of current page in PHP [duplicate] 【发布时间】:2010-11-19 23:29:36 【问题描述】:

php 中,如何获取当前页面的 URL?最好是http://domain.com之后的部分。

【问题讨论】:

请看这个答案:***.com/questions/6768793/php-get-the-full-url/… 我觉得有趣的是,这个问题被标记为另一个问题的重复,尽管两年前就被问到了 @cameronjonesweb 另一个问题的范围完全不同(获取完整的 URL),而不是这个问题(仅获取当前页面) 【参考方案1】:

您可以使用$_SERVER['HTTP_REFERER'],这将为您提供完整的 URL,例如:

假设您想获取站点名称的 url www.example.com 然后$_SERVER['HTTP_REFERER'] 会给您https://www.example.com

【讨论】:

为什么我的 $_SERVER 变量不包含此项?? $_SERVER['HTTP_REFERER'] 完全按照它在锡上所说的那样做,那就是获取将用户发送到页面的页面的 URL...即引用者。 赞成这个答案的人在调试他们的代码时会遇到一些麻烦。 HTTP_REFERER 不是当前页面,它是用户在当前页面之前所在的页面。 另外,这并不总是可靠的。它是由 user_agent 设置的,而不是服务器设置的——所以,正如 PHP 手册所说 (php.net/manual/en/reserved.variables.server.php),“简而言之,它不能真正被信任。”【参考方案2】:
$_SERVER['REQUEST_URI']

有关 $_SERVER 数组中可用信息的更多详细信息,请参阅the PHP manual page for it。

如果您还需要查询字符串(URL 中? 之后的位),则该部分在此变量中:

$_SERVER['QUERY_STRING']

【讨论】:

你也可以使用 $_SERVER['PHP_SELF'] iirc、PHP_SELF 和 REQUEST_URI 如果页面是通过 mod_rewrite 重定向的,则将具有不同的值 - 前者具有实际脚本的路径,后者具有最初请求的路径。 错误,至少在我的 apache 2.2.4 和 php 5.3 中,REQUEST_URI 包含 ? 之后的内容已经... $_SERVER['REQUEST_URI'] 也包含所有查询字符串,我为什么要使用 $_SERVER['QUERY_STRING']【参考方案3】:

如果您只想要http://domain.com 之后的部分网址,试试这个:

<?php echo $_SERVER['REQUEST_URI']; ?>

如果当前 url 是 http://domain.com/some-slug/some-id,echo 将只返回 '/some-slug/some-id'。

如果你想要完整的网址,试试这个:

<?php echo 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>

【讨论】:

不检查HTTPS://是否启用?我发现这个函数要检查:function isSSL() return (!empty($_SERVER['HTTPS']) &amp;&amp; $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443; 如果你只想要域名。 @ErikThiart,我试过 它显示为 example.com 我需要像example.com。有可能吗?【参考方案4】:

其他答案都是正确的。但是,请注意:如果您希望在 URI 中获取 ? 之后的内容,则应使用 $_GET[] 数组。

【讨论】:

【参考方案5】:
 $uri = $_SERVER['REQUEST_URI'];

这将为您提供请求的目录和文件名。如果您使用 mod_rewrite,这将非常有用,因为它会告诉您用户正在查看的页面。

如果您需要实际的文件名,您可能想尝试$_SERVER['PHP_SELF']、魔术常量__FILE__$_SERVER['SCRIPT_FILENAME']。后两者为您提供完整路径(从服务器的根目录),而不仅仅是您网站的根目录。它们对于包含等很有用。

$_SERVER['PHP_SELF'] 为您提供相对于网站根目录的文件名。

 $relative_path = $_SERVER['PHP_SELF'];
 $complete_path = __FILE__;
 $complete_path = $_SERVER['SCRIPT_FILENAME'];

【讨论】:

以上是关于如何在PHP中获取当前页面的URL [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iframe 获取当前页面加载的 url [重复]

获取当前页面的完整 URL (PHP) [重复]

如何在 jQuery Mobile 1.4.5 中获取当前页面 URL?

如何获取当前页面的url地址?

php如何获取302来路的url

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