我目前正在开发一个 PHP 项目,正在寻找一种方法来获取网站根目录的 URL;我的根目录有一个配置文件,所以我正在考虑使用它来找出“基本 URL”。我正在寻找一种动态执行此操作的方法,以便我可以找到网站根目录的 URL,即http://domain.com/my_app/
。我正在尽力避免使用相对路径,并使用 PHP 为我正在使用的任何内容生成 URL。例如,我使用 PHP 生成 CSS 代码,并且 CSS 代码链接到图像,因此我想在此处获取绝对 URL,而不是相对路径。
my_app/
admin/
resources/
css/
admin-css.php
imgs/
login.png
resources/
css/
css.php
imgs/
my-image.png
shared-image.png
config.php
In my resources/css/css.php
文件中,我正在寻找“基本 URL”,以便我可以生成一个绝对 URLimgs
文件夹之类的http://domain.com/resources/imgs/my-image.png
但目前我正在得到http://domain.com/resources/css/imgs/my-image.png
因为下面的定义着眼于获取加载的 PHP 文件的目录,而不是包含的文件。我还想在文件夹之间共享图像(即访问shared-image.png
文件来自admin
文件夹),因此获取基本 URL 对于生成链接来说是理想的选择。我避免相对路径的原因是因为我有一个创建 URL 的函数,createURL()
,这样我就可以让所有 URL 正常工作,而无需硬编码任何内容。
<?php
DEFINE('HTTP_TYPE', $_SERVER['HTTP_X_FORWARDED_PROTO']);
DEFINE('HTTP_ROOT', $_SERVER['HTTP_HOST']);
DEFINE('HTTP_FOLDER', dirname($_SERVER['PHP_SELF']) . '/');
DEFINE('BASE_URL', HTTP_TYPE . "://" . HTTP_ROOT . HTTP_FOLDER);
function createURL($pathFromRoot)
{
return BASE_URL . $pathFromRoot;
}
所有这些定义都位于我的配置文件中,因此我认为最好的方法是获取配置文件的 URL (http://domain.com/my_app/config.php
)并删除“config.php”。请记住,网站可以托管在文件夹结构的更深处http://domain.com/my_app/another/folder/config.php
或没有子文件夹http://domain.com/config.php
.
这可能吗,如果可以的话怎么办?或者我应该遵循另一种方法?