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

Windows Apache 配置虛擬主機完整步驟:httpd.conf、hosts、目錄權限與驗證

     編輯:PHP 綜合知識

在 Windows 開發環境為每個專案配置獨立域名(如 www.myproject.local),需修改 Apache httpd.conf 啟用虛擬主機、設定 DocumentRoot、目錄權限,並編輯系統 hosts 檔案解析域名。本文提供標準化步驟與常見錯誤排查。

1. 編輯 Apache httpd.conf

檔案位置:C:\Apache24\conf\httpd.conf (視安裝路徑調整)

步驟 A:確認模組載入

# 搜尋並取消註解 (去掉 #)
LoadModule vhost_alias_module modules/mod_vhost_alias.so
# 確認已載入
LoadModule rewrite_module modules/mod_rewrite.so

步驟 B:啟用虛擬主機配置檔 (推薦分離管理)

# 取消註解
Include conf/extra/httpd-vhosts.conf

步驟 C:編輯 conf/extra/httpd-vhosts.conf 新增虛擬主機

<VirtualHost *:80>
    ServerName www.myproject.local
    ServerAlias myproject.local
    DocumentRoot "D:/Projects/myproject/public"
    <Directory "D:/Projects/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>

關鍵指令說明:

  • ServerName:主域名,瀏覽器訪問時匹配。
  • DocumentRoot:專案公開目錄(如 Laravel public/、Symfony public/、ThinkPHP public/)。
  • AllowOverride All:允許 .htaccess 覆蓋(框架路由重寫必須)。
  • Require all granted:Apache 2.4+ 權限寫法,舊版為 Order allow,deny / Allow from all。

2. 編輯系統 hosts 檔案

路徑:C:\Windows\System32\drivers\etc\hosts

  • 需**管理員權限**開啟(記事本右鍵「以系統管理員身分執行」)。
  • 在檔案末尾新增:
127.0.0.1       www.myproject.local
127.0.0.1       myproject.local
::1             www.myproject.local

注意:IPv6 ::1 同步加入,避免瀏覽器優先解析 IPv6 導致連線失敗。

3. 建立專案目錄與測試檔案

# 在 D:/Projects/myproject/public 建立 index.php
<?php
echo "Virtual Host Works! " . date('Y-m-d H:i:s');
phpinfo();

4. 重啟 Apache 並驗證

# 命令列 (以管理員執行)
httpd -k restart
# 或 Windows 服務管理器重啟 Apache2.4 服務

瀏覽器訪問:https://www.myproject.local/ 應顯示測試頁面。

5. 常見問題排查清單

現象可能原因解決方法
瀏覽器顯示「找不到伺服器」hosts 未生效 / DNS 快取ipconfig /flushdns,確認 hosts 格式正確 (無多餘空格、Tab 分隔)
403 Forbidden目錄權限 / AllowOverride / Require檢查 <Directory> 區塊 Require all granted、路徑正確、磁碟權限允許讀取
404 Not Found (框架路由).htaccess 未生效 / mod_rewrite 未載入確認 LoadModule rewrite_module、AllowOverride All、.htaccess 存在且可讀
Apache 啟動失敗語法錯誤 / 埠佔用httpd -t 檢查語法;netstat -ano | findstr :80 查埠佔用
變更後不生效未重啟 Apache / 瀏覽器快取重啟服務,強制重新整理 Ctrl+F5

6. 進階:批次建立虛擬主機 (開發多專案)

若專案眾多,可啟用 mod_vhost_alias 動態映射:

<VirtualHost *:80>
    ServerName dev.local
    ServerAlias *.dev.local
    VirtualDocumentRoot "D:/Projects/%1/public"
    <Directory "D:/Projects/*/public">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

配合 hosts:

127.0.0.1   project1.dev.local
127.0.0.1   project2.dev.local
# 之後新增專案只需建立資料夾 D:/Projects/project3/public,無需改 Apache 設定

%1 代表域名第一段 (project1, project2...)。

7. HTTPS 本地開發 (mkcert)

# 安裝 mkcert (Go 編譯的單一執行檔)
mkcert -install
mkcert myproject.local "*.myproject.local" localhost 127.0.0.1 ::1

# 產生 myproject.local.pem + myproject.local-key.pem
# httpd-vhosts.conf 新增 443 埠 VirtualHost
<VirtualHost *:443>
    ServerName www.myproject.local
    DocumentRoot "D:/Projects/myproject/public"
    SSLEngine on
    SSLCertificateFile "C:/certs/myproject.local.pem"
    SSLCertificateKeyFile "C:/certs/myproject.local-key.pem"
    <Directory ...> ... </Directory>
</VirtualHost>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved