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

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

【问题讨论】:

  • 我觉得有趣的是,这个问题被标记为另一个问题的重复,尽管两年前就被问到了
  • @cameronjonesweb 另一个问题的范围完全不同(获取完整的 URL),而不是这个问题(仅获取当前页面)

标签: php


【解决方案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'];
    

    【讨论】:

      猜你喜欢
      • 2012-05-17
      • 2014-10-14
      • 2011-01-15
      • 2010-10-10
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 2014-11-21
      • 2016-06-27
      相关资源
      最近更新 更多