http 轉 https: .htaccess 的寫法

最近很多客戶的網站上線

只要是有會員登入/購物的網站

我都會建議客戶安裝 SSL

雖然之前SSL有一堆漏洞

但是 SSL 對於連線加密來說還是必要的

而且也有 SEO 評論說

網站裝了 SSL (用https連線) 排名會比較好

無標題

一般我們都會希望裝了 SSL 後

全站的的連線都是透過 https 連到 server

但是如果有些由後台程式去上架的內容

例如圖片 可能很多都是 http 的連結

我們沒辦法一一去改

所以就會想透過 .htaccess 去 redirect

這樣就不用去改內容

原本我google到的寫法是這樣

RewriteCond %{HTTP_HOST} !^xxx.com$ [NC]
RewriteRule ^(.*)$ https://xxx.com/$1 [R=301,L]

我打算把 https://xxx.com 進來的連線

全部重導到 https://xxx.com

不過悲劇發生了

這樣只會把所有 http 進來的連線

都導到首頁

所以我又google了另一個寫法

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

這樣就沒問題了

apache 會把不是 https 的連線全部換到 https

並且保留原本的所有參數

不過要是仔細看瀏覽器

你會發現其中的差異

全站都是https連線

首頁是這樣 有綠色的鎖頭

含有非https的連線

次頁卻沒有綠色的鎖頭

沒有綠色鎖頭代表

這個網站有若干連線 是沒有進行 https 連線的

不管是站內還是站外

如果有連線是沒有 https

這表示期間的連線未加密 仍有安全風險

所以你得去確認所有的連結是否都是 https 開頭

如果像是文章裡面原本的連結有 http

那還是得把文章內的 http 全部改成 https

用重導的沒用 (因為重導前還是沒加密)

所以裝 SSL 這種東西啊

最好是網站一弄起來就架好

如果是弄到一半才裝

就多多少少會有這類的問題

提供大家做經驗分享~

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料