網址:https://127.0.0.1/dev/classd/index.php/download
需取得紅框部分:/dev/classd/ 作為站內連結基礎路徑 baseUrl。
// 1. 取得當前腳本相對路徑(如 /dev/classd/index.php)
$scriptName = $_SERVER['SCRIPT_NAME'];
// 2. 取得目錄部分,並統一斜線方向
$baseUrl = str_replace('\\', '/', dirname($scriptName));
// 3. 處理根目錄情況:若為空或 '/',統一返回 '/'
$baseUrl = empty($baseUrl) ? '/' : '/' . trim($baseUrl, '/') . '/';
// 結果:/dev/classd/
$_SERVER['SCRIPT_NAME']:當前執行腳本的相對路徑(不含查詢字串)dirname():取得目錄部分,Windows 下可能產生反斜線,需 str_replace 修正trim($baseUrl, '/'):移除首尾斜線,避免 //dev//classd// 這類雙斜線/ 而非空字串ZF 的 baseUrl() 經過多層類別封裝、多次 $_SERVER 判斷,效能較差。本方法僅三行核心代碼,效能極高,足應付 99% 場景。
若專案部署在 /subdir/,上述邏輯自動適配,無需額外配置。