
網站裝好 SSL 憑證之後,https:// 開頭的網址就能正常使用了,但訪客如果輸入的是 http://、或從舊連結進來,還是會停留在沒有加密的版本。瀏覽器會在網址列顯示「不安全」,搜尋引擎也會把 http 和 https 當成兩個網址。
所以裝好 SSL 之後,要把所有 http 的連線自動 301 轉到 https。
開始之前
- 先確認 SSL 憑證已經裝好:用瀏覽器打開
https://你的網址,網址列出現鎖頭、沒有警告才繼續。還沒裝的話,大多數主機控制台都有免費的 Let's Encrypt 憑證可以一鍵安裝。 - 備份
.htaccess:改錯可能造成網站打不開,改回備份就會恢復。 - 規則放在最上面:放在
.htaccess的最前面,也就是 WordPress(# BEGIN WordPress)或 Joomla 原本規則的上面。
標準寫法(Apache、LiteSpeed 主機)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]意思是:如果目前不是 HTTPS 連線,就用 301 永久轉址到同一個網址的 https 版本,網址後面的路徑與參數都會保留。
舊寫法少了 301
這篇文章舊版(以及原本另一篇 Joomla 版的文章)用的寫法少了 [R=301,L] 這一段,Apache 會用預設的 302 暫時轉址,搜尋引擎可能不會把排名轉移到 https 網址。如果你以前照舊寫法設定,建議換成上面這一段。
網站前面有 Cloudflare 或 CDN 時
使用 Cloudflare 之類的 CDN,或主機本身有反向代理時,主機看到的連線可能永遠是 http,用上面的寫法會一直轉、造成「重新導向次數過多」。改用這個寫法,判斷原始連線是不是 https:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]使用 Cloudflare 的話,也可以直接在 Cloudflare 後台「SSL/TLS」把加密模式設成「完整(嚴格)」,並開啟「一律使用 HTTPS」,就不需要在 .htaccess 另外轉址。
同時統一 www
想同時把 example.com 和 www.example.com 統一成一個網址,請使用.htaccess 用法大全裡「統一網址」那一段,它會同時處理 https 與 www,不需要再另外加上面的規則。
Nginx 主機
Nginx 不讀 .htaccess,要在網站的 Nginx 設定檔加入(通常要請主機商處理):
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}WordPress:還要改這兩個地方
- 網站網址改成 https:到「設定 → 一般」,把「WordPress 位址(網址)」和「網站位址(網址)」都改成
https://開頭,儲存後會需要重新登入。 - 修正混合內容:舊文章裡的圖片、連結如果還是
http://開頭,網址列的鎖頭可能會出現警告。可以用 Better Search Replace 這類外掛,把資料庫裡的http://你的網址全部取代成https://你的網址(操作前一定要備份資料庫)。
Joomla:開啟「強制 HTTPS」
Joomla 後台「系統 → 全域設定 → 伺服器」,把「強制 HTTPS」設成「整個網站」。搭配上面的 .htaccess 寫法,連舊的 http 連結也會被轉過去。
設好之後怎麼確認?
- 在瀏覽器輸入
http://你的網址,應該會自動變成https://。 - 用線上的「HTTP 狀態碼檢查」工具(搜尋「redirect checker」)輸入 http 網址,應該看到 301,而且只轉一次就到達 https。
- 到 Google Search Console 確認 https 版本的網站已經加入並驗證。
常見問題
出現「重新導向次數過多」?
通常是轉址規則互相衝突:例如 Cloudflare 設定成「彈性」模式(Cloudflare 用 http 連回主機)、主機又把 http 轉到 https,就會無限循環。把 Cloudflare 改成「完整」或「完整(嚴格)」模式,或改用上面 CDN 專用的寫法。
要不要加 HSTS?
HSTS 會讓瀏覽器記住「這個網站只能用 https 連線」,安全性更高。但設定之後,如果 SSL 憑證出問題,訪客會完全打不開網站,而且瀏覽器會記住一段時間。確定網站 https 都運作正常、憑證會自動續約之後再考慮。
延伸閱讀
- .htaccess 用法大全:轉址、HTTPS、安全防護、壓縮與快取常用設定(WordPress 適用)
- 網頁轉址與自動重新整理語法整理:301 轉址、meta refresh、JavaScript(WordPress 適用)
- WordPress 網址統一成有 www 或沒有 www:一般設定與 301 轉址完整做法
SSL、轉址、CDN 這些設定彼此會互相影響,一個沒設好就可能整站打不開。正威網路行銷是 25 年經驗的基隆網頁設計工作室,也提供網站維護託管,有問題歡迎來聊聊。







發表留言
還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。