所以我要在本地主机上创建一个网站,文件夹名称为“ 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/”。
答案 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];
}
可能有一些错误,但是现在我没有看到任何错误。如果可以指出一些,请告诉我。谢谢