我目前正在開發一個PHP項目,並正在尋找一種獲取網站根目錄URL的方法;我在根目錄下有一個配置文件,因此我正在考慮使用它來找出「基本URL」。我正在尋找一種動態的方式,因此我可以找到網站根目錄的URL,即http://domain.com/my_app/
。我盡我所能避免使用相對路徑,並使用PHP爲我所使用的任何內容生成URL。例如,我使用PHP來生成CSS代碼和圖像的CSS代碼鏈接,所以我想在這裏獲取絕對URL而不是相對路徑。獲取PHP網站的根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
在我resources/css/css.php
文件,我期待在獲得「基地URL」這樣我就可以生成一個絕對URL到imgs
文件夾一樣http://domain.com/resources/imgs/my-image.png
,但目前我在獲得目錄獲得,因爲下面的樣子定義http://domain.com/resources/css/imgs/my-image.png
加載的PHP文件,而不是包含的文件。我還希望在文件夾之間共享圖像(即訪問admin
文件夾中的shared-image.png
文件),以便獲取基本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
更深的託管。
這是可能的,如果是這樣怎麼辦?或者我應該遵循另一種方法?
在客戶端的URL,或者在服務器側的路徑? (另請注意,'HTTP_X_FORWARDED_PROTO'僅在客戶端發送了'X-Forwarded-Proto'頭部時纔會設置,但並非總是如此。) – zneak
不清楚,您在'resources/css'中並希望獲得'my_app /'或者你在我的應用程序中,包括'resources/css'中的文件並獲取它? – lampwins
難道你不能只解析你想要的URL的一部分?你拿你當前的BASE_URL,只是分裂它錯了? –