我需要这个脚本来做一些非常简单的事情。
我从localhost工作,然后上传。我需要返回的目录是动态的。即使它有多个子文件夹,也可以抓取正确的URL。
它说的地方
$ baseurl = $ protocol。 $ host。 “/网站/ andrewhunter /”;
我需要的是,如果您正在下载或上传网站,脚本会知道正确的网址。现在,用于托管环境的是子目录。所以domain.com/websites/client_website并不能改变。
所以基本上我无法让它正常工作。我尝试了一些方法,这是封闭的方法,通过在所有需要的页面上回显基本URL。
它没有抓取它上面的文件夹或动态调整到domain.com/websites/我必须手动添加
/* First we need to get the protocol the website is using */
$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"], 0, 5)) == 'https' ? 'https://' : 'http://';
/* returns /myproject/index.php */
$path = $_SERVER['PHP_SELF'];
/*
* returns an array with:
* Array (
* [dirname] => /myproject/
* [basename] => index.php
* [extension] => php
* [filename] => index
* )
*/
$path_parts = pathinfo($path);
$directory = $path_parts['dirname'];
/*
* If we are visiting a page off the base URL, the dirname would just be a "/",
* If it is, we would want to remove this
*/
$directory = ($directory == "/") ? "" : $directory;
/* Returns localhost OR mysite.com */
$host = $_SERVER['HTTP_HOST'];
$baseurl = $protocol . $host . "/websites/andrewhunter/";
>
答案 0 :(得分:0)
为什么那部分$path_parts
?我对你的问题感到有些困惑,但我知道你基本上想要在浏览器的地址栏中写下什么?这适用于我的遥控器以及我当地的MAMP,可能是我文件夹中的第一级或第四级文件
/* First we need to get the protocol the website is using */
$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"], 0, 5)) == 'https' ? 'https://' : 'http://';
/* returns /myproject/index.php */
$path = $_SERVER['PHP_SELF'];
/* Returns localhost OR mysite.com */
$host = $_SERVER['HTTP_HOST'];
$baseurl = $protocol . $host . $path;
echo $baseurl;