【问题标题】:What $_SERVER variable provide full URL [duplicate]什么 $_SERVER 变量提供完整的 URL [重复]
【发布时间】:2012-01-13 10:08:22
【问题描述】:

【问题讨论】:

  • var_dump( $_SERVER); 并找到它或条目的组合。

标签: php global-variables


【解决方案1】:

你不妨试试:

echo '<pre>';
print_r($_SERVER);
echo '</pre>';

$_SERVER['HTTP_HOST']$_SERVER['SCRIPT_NAME']$_SERVER['PHP_SELF'] 的组合应该是您正在寻找的。​​p>

【讨论】:

    【解决方案2】:

    $_SERVER 中没有完整的 url。但是你可以使用这个代码:

    $url = "http://" . $_SERVER['HTTP_HOST'] . "/" . $_SERVER['PHP_SELF'] . "/" . $_SERVER['QUERYSTRING'] . "/"; 
    

    【讨论】:

      【解决方案3】:

      你需要自己构建它;

      echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
      

      您也可以使用$_SERVER['HTTPS'] 来检测是HTTP 还是HTTPS。

      我建议使用$_SERVER['REQUEST_URI'],因为这正是用户正在寻找的,在任何重写或其他任何事情之前,并且包括 GET 变量

      【讨论】:

      • @MichaelMior 感谢您的评论,我已经更新了答案
      【解决方案4】:
      // Get HTTP/HTTPS (the possible values for this vary from server to server)
      $myUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && !in_array(strtolower($_SERVER['HTTPS']),array('off','no'))) ? 'https' : 'http';
      // Get domain portion
      $myUrl .= '://'.$_SERVER['HTTP_HOST'];
      // Get path to script
      $myUrl .= $_SERVER['REQUEST_URI'];
      // Add path info, if any
      if (!empty($_SERVER['PATH_INFO'])) $myUrl .= $_SERVER['PATH_INFO'];
      // Add query string, if any (some servers include a ?, some don't)
      if (!empty($_SERVER['QUERY_STRING'])) $myUrl .= '?'.ltrim($_SERVER['REQUEST_URI'],'?');
      
      echo $myUrl;
      

      ...这是我最有弹性的例程。

      【讨论】:

      • +1 未经测试,这看起来是最完整的答案。
      • $_SERVER['REQUEST_URI'] 包括路径信息和查询字符串(如果存在),所以这对我来说是加倍的。删除 PATH_INFOQUERY_STRING 行修复它(YMMV,服务器配置可能不同)。
      猜你喜欢
      • 2023-04-04
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 2018-04-04
      • 2011-01-16
      • 2014-11-30
      • 1970-01-01
      相关资源
      最近更新 更多