首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

XAMPP 虛擬主機配置完全指南:多域名綁定本地開發目錄

     編輯:PHP 相關知識

為什麼需要虛擬主機?

預設 XAMPP 只能透過 https://localhost/專案目錄 訪問專案。實際開發中常需求:

  • 使用自定義域名(如 https://myproject.local)模擬正式環境
  • 多專案並行開發,各自獨立域名、DocumentRoot
  • 測試子域名、Cookie 作用域、HTTPS 重導向等行為

三步驟完成配置

第一步:修改系統 hosts 檔案

Windows:C:\Windows\System32\drivers\etc\hosts(需管理員權限編輯)
macOS/Linux:/etc/hosts(需 sudo)

# 在檔案末尾新增
127.0.0.1   myproject.local
127.0.0.1   api.myproject.local
127.0.0.1   admin.myproject.local
# 也可使用 *.local 通配(需配合 dnsmasq 或類似工具)

第二步:啟用 Apache 虛擬主機配置

編輯 xampp/apache/conf/httpd.conf,確保以下行未被註釋:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

第三步:配置虛擬主機

編輯 xampp/apache/conf/extra/httpd-vhosts.conf:

# 必須啟用 NameVirtualHost(Apache 2.4+ 通常預設啟用,但明確宣告無妨)
NameVirtualHost *:80

# 【重要】第一個 VirtualHost 為預設回落,建議指向原本的 htdocs
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs"
    ServerName localhost
    <Directory "C:/xampp/htdocs">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

# 專案一:myproject.local
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/myproject/public"
    ServerName myproject.local
    ServerAlias www.myproject.local
    <Directory "C:/xampp/htdocs/myproject/public">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
    # 可選:獨立錯誤/存取日誌
    ErrorLog "logs/myproject-error.log"
    CustomLog "logs/myproject-access.log" common
</VirtualHost>

# 專案二:api.myproject.local
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/myproject-api/public"
    ServerName api.myproject.local
    <Directory "C:/xampp/htdocs/myproject-api/public">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

關鍵指令說明

重啟 Apache 並測試

  1. XAMPP Control Panel → Apache Stop → Start
  2. 瀏覽器訪問 https://myproject.local 應正確載入專案
  3. 若出現 403 Forbidden:檢查 Directory 區塊權限、路徑拼寫、磁碟權限
  4. 若出現 404:確認 DocumentRoot 指向正確的 public/ 或 index.php 所在目錄

進階:支援 HTTPS (SSL) 本地開發

# 1. 產生自簽憑證(僅開發用)
# 使用 mkcert 工具(推薦):mkcert -install && mkcert myproject.local

# 2. httpd-ssl.conf 或 vhosts 中新增 443 埠
<VirtualHost *:443>
    DocumentRoot "C:/xampp/htdocs/myproject/public"
    ServerName myproject.local
    
    SSLEngine on
    SSLCertificateFile "C:/xampp/apache/conf/ssl/myproject.local.pem"
    SSLCertificateKeyFile "C:/xampp/apache/conf/ssl/myproject.local-key.pem"
    
    <Directory "C:/xampp/htdocs/myproject/public">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

# 3. httpd.conf 確認載入 ssl 模組與 httpd-ssl.conf
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf

常見問題快速排查

指令用途
DocumentRoot網站根目錄(公開可訪問的資料夾,通常為 public/)
ServerName主域名
ServerAlias別名域名(如 www.、子域名)
Directory目錄權限控制,AllowOverride All 允許 .htaccess 覆蓋(Laravel/Symfony/CodeIgniter 等框架必須)
Require all grantedApache 2.4+ 授權語法(舊版為 Order allow,deny / Allow from all)

替代方案:使用現代化開發環境

  • Laravel Valet / Herd (macOS):自動配置 *.test 域名、SSL、極速
  • Docker (Laradock, Devilbox, Docker Compose):環境一致性、生產環境鏡像、多版本共存
  • PHP 內建伺服器:php -S myproject.local:8000 -t public(簡單專案、無 Apache/Nginx 依賴)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
現象可能原因解決
所有域名都指向第一個專案缺少預設 VirtualHost (localhost)在 vhosts.conf 最前面加上 localhost 區塊
修改 hosts 後不生效DNS 快取ipconfig /flushdns (Win) / sudo dscacheutil -flushcache (Mac)
.htaccess 不生效AllowOverride None設定 AllowOverride All
403 Forbidden目錄權限、路徑錯誤檢查 DocumentRoot 路徑、Directory 區塊、磁碟讀取權限
端口衝突80/443 被佔用關閉 IIS/其他 Web 服務、或修改 Apache Listen 埠