如何在本地主机上获取主URL?

时间:2018-08-29 08:09:47

标签: php localhost

所以我要在本地主机上创建一个网站,文件夹名称为“ veco”,因此我的网址链接为http://localhost/veco/

我目前正在使用此代码获取主网址“ http://localhost/veco/”:

<?php 
function home_url() 
{
    // output: /myproject/index.php
    $currentPath = $_SERVER['PHP_SELF']; 

    // output: Array ( [dirname] => /myproject [basename] => index.php [extension] => php [filename] => index ) 
    $pathInfo = pathinfo($currentPath); 

    // output: localhost
    $hostName = $_SERVER['HTTP_HOST']; 

    // output: http://
    $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://';

    // return: http://localhost/myproject/
    return $protocol.$hostName.$pathInfo['dirname']."/";
}
 ?>

现在我在“关于”页面上,我的网址是http://localhost/veco/about 现在在About页面上,我做了一个表格

  <form action="data/cs_menu.php" method="POST">
    <input type="text" name="f_menu">
    <input type="submit" name="save_menu">
    </form>

现在,当我提交此表单时,它将把我重定向到正确的http://localhost/veco/about/data/cs_menu.php,但是当我使用函数home_url时,它会给我“ http://localhost/veco/data/”而不是“ http://localhost/veco/

有什么想法吗?我现在不使用Wordpress,但是如果您对Wordpress熟悉的话,它们具有函数“ home_url();”。它返回我正在尝试复制的“ http://localhost/FILENAME/”。

3 个答案:

答案 0 :(得分:0)

  

我现在不使用Wordpress,但是如果您对Wordpress熟悉的话,它们具有函数“ home_url();”

WordPress从安装WordPress的数据库中查找值。

通常,无法从网站上的任意页面确定主页的URL。您可能获得的最接近的结果是,按照“首页恰好是该页面上方的两个目录”的行向每个页面手动添加规则。

答案 1 :(得分:0)

您可以尝试以下方法:

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

并且,如果您计划使用https,则可以使用以下功能:

function base_url(){
  return sprintf(
  "%s://%s%s",
  isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
  $_SERVER['SERVER_NAME'],
  $_SERVER['REQUEST_URI']
 );
}

并这样称呼:

echo url();
#=> http://127.0.0.1/foo

对于$ _SERVER全局变量,可以在here

中找到文档。

原始答案已发布在this thread上。

您应该检查一下,让我知道是否可以解决您的问题。 希望这会有所帮助。

答案 2 :(得分:0)

我终于找到了解决方案,它也是动态的。我只编辑了函数并添加了以下内容:

   $home_url = (explode("/",$full_url));
   return $home_url[0]."//".$home_url[2]."/".$home_url[3];

现在这是完整的最终代码:

function home_url() 
{
    // output: /myproject/index.php
    $currentPath = $_SERVER['PHP_SELF']; 

    // output: Array ( [dirname] => /myproject [basename] => index.php [extension] => php [filename] => index ) 
    $pathInfo = pathinfo($currentPath); 

    // output: localhost
    $hostName = $_SERVER['HTTP_HOST']; 

    // output: http://
    $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://';

    // return: http://localhost/myproject/
    $full_url = $protocol.$hostName.$pathInfo['dirname']."/";
    $home_url = (explode("/",$full_url));
    return $home_url[0]."//".$home_url[2]."/".$home_url[3];

}

可能有一些错误,但是现在我没有看到任何错误。如果可以指出一些,请告诉我。谢谢