0%

正威網路行銷工作室,專注於基隆、台北與全台客製化網頁設計,提供專業 RWD 響應式、SEO 搜尋引擎優化、品牌形象設計與網站維護託管服務。

搜尋文章
聯絡資訊
地址基隆市仁二路 220 號 5 樓
追蹤我們

.htaccess 強制 HTTPS 寫法:http 自動轉 https(WordPress、Joomla 適用)

藍色背景上的伺服器主機立體插圖

網站裝好 SSL 憑證之後,https:// 開頭的網址就能正常使用了,但訪客如果輸入的是 http://、或從舊連結進來,還是會停留在沒有加密的版本。瀏覽器會在網址列顯示「不安全」,搜尋引擎也會把 http 和 https 當成兩個網址。

所以裝好 SSL 之後,要把所有 http 的連線自動 301 轉到 https。

開始之前

  • 先確認 SSL 憑證已經裝好:用瀏覽器打開 https://你的網址,網址列出現鎖頭、沒有警告才繼續。還沒裝的話,大多數主機控制台都有免費的 Let's Encrypt 憑證可以一鍵安裝。
  • 備份 .htaccess:改錯可能造成網站打不開,改回備份就會恢復。
  • 規則放在最上面:放在 .htaccess 的最前面,也就是 WordPress(# BEGIN WordPress)或 Joomla 原本規則的上面。

標準寫法(Apache、LiteSpeed 主機)

Apache (.htaccess)
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:

Apache (.htaccess)
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 設定檔加入(通常要請主機商處理):

Nginx
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

WordPress:還要改這兩個地方

  1. 網站網址改成 https:到「設定 → 一般」,把「WordPress 位址(網址)」和「網站位址(網址)」都改成 https:// 開頭,儲存後會需要重新登入。
  2. 修正混合內容:舊文章裡的圖片、連結如果還是 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 都運作正常、憑證會自動續約之後再考慮。

延伸閱讀

SSL、轉址、CDN 這些設定彼此會互相影響,一個沒設好就可能整站打不開。正威網路行銷是 25 年經驗的基隆網頁設計工作室,也提供網站維護託管,有問題歡迎來聊聊。

分享這篇文章

返回文章列表更多「html網頁語法教學」文章

發表留言

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

讓我們一起打造
您的專屬網站!