如何在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']) && $_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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章