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 不會公開。

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