http 轉 https: .htaccess 的寫法
2015 Nov 14 未分類
最近很多客戶的網站上線
只要是有會員登入/購物的網站
我都會建議客戶安裝 SSL
雖然之前SSL有一堆漏洞
但是 SSL 對於連線加密來說還是必要的
而且也有 SEO 評論說
網站裝了 SSL (用https連線) 排名會比較好
一般我們都會希望裝了 SSL 後
全站的的連線都是透過 https 連到 server
但是如果有些由後台程式去上架的內容
例如圖片 可能很多都是 http 的連結
我們沒辦法一一去改
所以就會想透過 .htaccess 去 redirect
這樣就不用去改內容
原本我google到的寫法是這樣
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
我打算把 https://example.com 進來的連線
全部重導到 https://example.com
不過悲劇發生了
這樣只會把所有 http 進來的連線
都導到首頁
所以我又google了另一個寫法
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
這樣就沒問題了
apache 會把不是 https 的連線全部換到 https
並且保留原本的所有參數
不過要是仔細看瀏覽器
你會發現其中的差異
首頁是這樣 有綠色的鎖頭
次頁卻沒有綠色的鎖頭
沒有綠色鎖頭代表
這個網站有若干連線 是沒有進行 https 連線的
不管是站內還是站外
如果有連線是沒有 https
這表示期間的連線未加密 仍有安全風險
所以你得去確認所有的連結是否都是 https 開頭
如果像是文章裡面原本的連結有 http
那還是得把文章內的 http 全部改成 https
用重導的沒用 (因為重導前還是沒加密)
所以裝 SSL 這種東西啊
最好是網站一弄起來就架好
如果是弄到一半才裝
就多多少少會有這類的問題
提供大家做經驗分享~