在 ServBay 中設定網站重導
網站重導是讓訪客自動從一個 URL 引導到另一個 URL 的過程。在本機開發環境中設定重導,對於模擬正式環境行為、測試 URL 結構變化,或確保舊連結在新開發版本中仍然有效至關重要。ServBay 作為一款強大的本機 Web 開發環境,讓您能輕鬆透過其整合的 Web 伺服器(Caddy 或 Nginx)來設定網站重導。
概述
在 ServBay 中,您為每個網站創建的設定檔都由獨立的 Web 伺服器進行管理。網站重導是透過修改這些 Web 伺服器的設定檔來實現。ServBay 支援 Caddy 和 Nginx 作為 Web 伺服器,您可根據專案需求或個人偏好選擇其中之一。設定重導時,通常需指明來源 URL 模式、目標 URL,以及重導類型(如 301 永久重導或 302 臨時重導)。
適用情境
在本機開發時利用 ServBay 設定網站重導的常見用途包括:
- 模擬正式環境: 確保您的本機設定與正式伺服器上的重導規則一致。
- 測試 HTTPS: 強制所有 HTTP 請求轉導到 HTTPS,模擬安全連線。
- 正規化 URL: 將帶
www
的網域名稱重導至不帶www
,或反之,以確保 URL 一致性。 - 處理 URL 結構變動: 當網站頁面路徑或結構調整時,把舊的 URL 重導到新的 URL,避免本機測試時出現「找不到頁面」錯誤。
- 測試網域轉移: 模擬舊網域指向新網域的重導設定。
前置條件
若要在 ServBay 設定網站重導,您需要:
- 已安裝並啟動 ServBay。
- 已在 ServBay 中新增並設定好欲進行重導的網站。
- 了解您的網站採用的是 Caddy 還是 Nginx 作為 Web 伺服器。
設定方式
ServBay 為每個網站提供獨立的 Web 伺服器設定檔,您可經由 ServBay UI 輕鬆存取與編輯這些檔案。
存取網站設定檔
- 打開 ServBay 應用程式。
- 在左側導覽欄點選 網站 (Website)。
- 找到要設定重導的網站,點其名稱進入網站詳情頁。
- 在詳情頁中,找到並點擊「設定檔」或類似選項(實際名稱/位置視 ServBay 版本略有不同),即可開啟該網站相對應的 Web 伺服器設定檔。
接下來,依照您的網站所用 Web 伺服器(Caddy 或 Nginx),參考下列說明進行設定。
使用 Caddy 進行重導
若網站採用 Caddy 作為伺服器,需編輯該網站的 Caddyfile。Caddyfile 語法簡潔易懂。
以下為常見的 Caddy 重導範例。請將這些配置加入您網站的 Caddyfile 中,通常於站點區塊 ({}
) 內。
範例 1: HTTP 至 HTTPS 重導
Caddy 預設會自動處理 HTTP 到 HTTPS 重導,只要您的網站已配置 SSL 憑證(無論是 ServBay User CA 或透過 ACME)。如需手動或更精細控制,可使用 redirect
指令:
servbay.demo {
# ... 其他設定 ...
# 強制所有 HTTP 請求重導至 HTTPS
# 若使用 ServBay 的 SSL 功能,通常無需手動新增本規則
# 但需自訂時可如下設定:
redir http://servbay.demo https://servbay.demo{uri} permanent
# ... 其他設定 ...
}
2
3
4
5
6
7
8
9
10
範例 2: 非 www 至 www 重導
將 servbay.demo
重導到 www.servbay.demo
:
servbay.demo {
# 將 servbay.demo 的所有請求永久重導至 www.servbay.demo
redir https://www.servbay.demo{uri} permanent
}
www.servbay.demo {
# www.servbay.demo 的正常網站設定
root * /Applications/ServBay/www/your-servbay-demo-site
file_server
# ... 其他設定 ...
}
2
3
4
5
6
7
8
9
10
11
範例 3: www 至非 www 重導
將 www.servbay.demo
重導到 servbay.demo
:
www.servbay.demo {
# 將 www.servbay.demo 的所有請求永久重導至 servbay.demo
redir https://servbay.demo{uri} permanent
}
servbay.demo {
# servbay.demo 的正常網站設定
root * /Applications/ServBay/www/your-servbay-demo-site
file_server
# ... 其他設定 ...
}
2
3
4
5
6
7
8
9
10
11
範例 4: 特定路徑重導
將舊的 /old-path
重導到新的 /new-path
:
servbay.demo {
# ... 其他設定 ...
# 將 /old-path 永久重導至 /new-path
redir /old-path /new-path permanent
# 將 /deprecated/page.html 臨時重導至 /new/page/
redir /deprecated/page.html /new/page/ temporary
# ... 其他設定 ...
}
2
3
4
5
6
7
8
9
10
11
Caddy 重導類型
permanent
: 301 永久重導,對 SEO 友善。temporary
: 302 臨時重導。internal
: 內部重寫,URL 不變(非 HTTP 層級重導)。
修改 Caddyfile 後,請儲存檔案,ServBay 將會自動或提示您重新載入 Caddy 設定以生效。
使用 Nginx 進行重導
若您的網站採用 Nginx 作為伺服器,需編輯該網站的 Nginx 設定檔(多為 .conf
檔)。Nginx 可用 return
或 rewrite
指令實現重導,return
適用簡單重導,rewrite
能配合正則,適合複雜場景。
以下為常見的 Nginx 重導範例。請將這些配置加入您網站的 Nginx .conf
檔中,通常位於 server
區塊內。
範例 1: HTTP 至 HTTPS 重導
在 ServBay 中,若您的網站同步監聽 80 和 443 連接埠,可於 80 連接埠的 server
區塊中加上重導規則:
server {
listen 80;
listen [::]:80;
server_name servbay.demo www.servbay.demo;
# 將所有 HTTP 請求重導到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name servbay.demo www.servbay.demo;
# ... HTTPS 網站的其他設定 ...
# ssl_certificate ...;
# ssl_certificate_key ...;
# 網站目錄設定
root /Applications/ServBay/www/your-servbay-demo-site;
index index.html index.htm index.php;
# ... 其他 location 區塊 ...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
範例 2: 非 www 至 www 重導
將 servbay.demo
重導到 www.servbay.demo
:
server {
listen 80;
listen [::]:80;
server_name servbay.demo; # 監聽非 www 網域
# 所有請求重導至 www 子網域,保留 URI 與協議
return 301 $scheme://www.servbay.demo$request_uri;
}
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.servbay.demo; # 監聽 www 網域
# ... www 網站的正常設定 ...
# ssl_certificate ...;
# ssl_certificate_key ...;
root /Applications/ServBay/www/your-servbay-demo-site;
index index.html index.htm index.php;
# ...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
範例 3: www 至非 www 重導
將 www.servbay.demo
重導到 servbay.demo
:
server {
listen 80;
listen [::]:80;
server_name www.servbay.demo; # 監聽 www 網域
# 將所有請求重導到非 www 網域,保留 URI 與協議
return 301 $scheme://servbay.demo$request_uri;
}
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name servbay.demo; # 監聽非 www 網域
# ... 非 www 網站的正常設定 ...
# ssl_certificate ...;
# ssl_certificate_key ...;
root /Applications/ServBay/www/your-servbay-demo-site;
index index.html index.htm index.php;
# ...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
範例 4: 特定路徑重導(使用 location
指令與 return
或 rewrite
)
將舊的 /old-path
重導到新的 /new-path
:
server {
# ... 其他 server 設定 ...
location = /old-path {
# 精確比對 /old-path,永久重導至 /new-path
return 301 /new-path;
}
location /deprecated/ {
# 將 /deprecated/ 下所有請求臨時重導至 /archive/
rewrite ^/deprecated/(.*)$ /archive/$1 temporary;
}
# ... 其他 location 區塊 ...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Nginx 重導類型
301
: 永久重導。302
: 臨時重導。redirect
: 等於 302。permanent
: 等於 301。
修改 Nginx .conf
檔後,請記得儲存,ServBay 將會自動或提示您重新載入 Nginx 設定使其生效。
注意事項
- 備份設定檔: 修改任何設定前請先備份原檔以便復原。
- 檢查語法: 編輯設定後,最好先檢查其語法是否正確。ServBay 儲存時一般會自動基本檢查,但自行檢查更保險。Nginx 可用
nginx -t
指令(如 Nginx 已加至 PATH 或透過 ServBay 終端存取)。 - 測試重導: 設定完畢後,務必於瀏覽器中測試各種情境,包括有無
www
、HTTP/HTTPS、以及特定設定路徑,確保重導如預期作用。 - 瀏覽器快取: 瀏覽器會快取 301 永久重導,若測試期間頻繁調整 301 規則可能遇到快取問題,此時請清除瀏覽器快取,或用無痕模式/開發者工具停用快取進行測試。臨時測試可先用 302,定案後再換回 301。
- ServBay 重新載入: 修改設定後,確保 ServBay 已成功重新載入 Web 伺服器設定,通常會自動,或於 UI 有相關提示/按鈕。
常見問題 (FAQ)
Q:我設好了重導,但瀏覽器沒有跳轉怎麼辦?
A:可能原因如下:
- 設定檔有誤: 檢查設定語法正確,儲存是否成功。
- ServBay 未重新載入設定: 確認 ServBay 是否已套用新設定。
- 瀏覽器快取: 請清除快取或用無痕模式測試。
- URL 匹配問題: 檢查您的重導規則來源 URL/路徑是否與實際訪問完全符合。
Q:301 和 302 重導有什麼差別?本機開發該用哪個?
A:301 代表永久重導,通知瀏覽器及搜尋引擎資源已永久搬移,有助 SEO。302 為臨時重導,表示資源僅短暫遷移。本機開發時,臨時測試或偵錯建議用 302,因為瀏覽器不會快取。如需模擬未來會是永久重導(如網域轉移),則用 301 較為貼切。
Q:我編輯設定檔後,ServBay 提示錯誤或 Web 伺服器無法啟動怎麼辦?
A:通常是設定語法有誤,請檢查您修改內容是否正確,並對照 Caddyfile 或 Nginx 設定語法修正。ServBay 的日誌檔可能提供更詳細錯誤訊息,可查閱以進一步排查。
總結
在 ServBay 中設定網站重導是本機開發常見操作,只需直接編輯 Caddy 或 Nginx 的設定檔即可實現。不論是為了模擬正式環境、測試 HTTPS,還是處理 URL 結構調整,熟悉 Web 伺服器的重導語法(Caddy 為 redir
,Nginx 為 return
/rewrite
)都能協助您高效於 ServBay 完成此任務。設定完畢後,務必徹底測試,並留意瀏覽器快取的影響。