[htaccess]如何強制把HTTP 導向HTTPS,打造更安全的加密網站

文章推薦指數: 80 %
投票人數:10人

第二行就是強迫轉址的敘述:RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]。

這段敘述主要是說,所有 ... 首頁[how]其實可以這樣做[App]應用應用[info]或許有興趣知道 iOSMacOSHTML5CSS3CloudAffinityPhoto,Photoshop amigo! cassandre chiron marmalade sweetdumpling Tahini ‹‹如何刪除Google搜尋紀錄,或是查詢所有在Google上的歷史活動呢?Home››[how]其實可以這樣做 [htaccess]如何強制把HTTP導向HTTPS,打造更安全的加密網站 使用.htaccess來強迫讓HTTP轉為HTTPS 網路不是一個很安全的環境,這點大家應該都非常清楚了。

在過去,一個加密網站(以HTTPS為首的網址)通常都是商業網站或是大型網站為主, 像是有提供線上交易的電子商務類網站,或是有會員專區的那些服務型網站, 雖然近年來很多網路專家一直呼籲網路管理員或網站站長們, 希望大家盡可能的將自家管理的網站,從HTTP升級到HTTPS,成效其實普普。

倒是Google一出手,先是在他們自家瀏覽器Chrome的網址列上,直接大剌剌的告訴全世界,你的網站『不安全』, 接著又公布說那些沒有加密為HTTPS的網站搜尋排名將會調降, 就這樣很快的, 升級為HTTPS,就成了所有網站管理員們的集體大作戰XD 當然了,我們五分鐘閱讀的網站也不例外的改為了HTTPS(https://km.nicetypo.com)。

用.htaccess檔案強制將HTTP導向HTTPS 在整個從HTTP轉換到HTTPS網站的過程中,最重要的一項工作,當屬如何強制把每一個HTTP來的流量,導向到HTTPS的版本,這個強制HTTP轉HTTPS任務絕對可以說整組計畫裡的重中之重。

特別是已經服務上線有一段時間的網站, 不管是搜尋進來的流量、 還是其他網站的逆向連結(Referrallink)連過來的流量、 即便原本網站上不同文章之間的內部連結,都還是維持舊的HTTP的版本。

如果不強制把這些流量都導向到新的HTTPS網頁, 那麼不僅僅升級無效,還有可能因而產生更多的錯誤。

更更糟糕的還有, 如果沒有這麼做的話,那麼就等同於你的網站很多的頁面都同時存在兩個版本:一個是HTTP版本,另一個則是HTTPS的版本,因為就網址而言,多了一個s,就是一個新的網址,那麼一個網站有很多的重複頁面,對於SEO來說可不是見好事呢! 這就是為什麼要反覆說強制轉址是這麼的重要了。

下面的範例就是如何使用.htaccess的檔案,來強制把HTTP導向HTTPS: RewriteEngineOn RewriteCond%{HTTPS}off RewriteRule(.*)https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L] 上面這個程式碼第一行:RewriteCond%{HTTPS}off, 就是先對主機宣告說凡是進來的流量,是以HTTPS為首的,就不管他,只處理不是HTTPS開頭的連線要求。

第二行就是強迫轉址的敘述:RewriteRule(.*)https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L]。

這段敘述主要是說,所有的連線要求(當然已經扣掉了之前宣告過的HTTPS流量),都把要求的網址重寫一次,將HTTP改為HTTPS。

最後端的[R=301,L],則是說轉址(R)是以301(永久轉換)的模式來轉換。

L則是指如果之前的動作完成了,就到這裡結束,後面還有其他什麼程式碼的就不關我的事了。

同時大家也可以參考我們之前寫的另一篇關於轉址的教學文章: [htaccess]把www的網址永遠轉址到non-www。

只要把上面的文字,複製到網站根目錄的.htaccess裡面就可以了(記得第一段RewriteEngineOn如果已經有的話,就不用重複貼入)。

HTTP轉向HTTPS的後續檢查工作清單 除了上面的強制轉址以外,升級為HTTPS之後,還有很多後續的動作也別輕忽喔。

因為光光是網址改了還不算完全的大功告成, 後續還有一些雜七雜八的小動作要做,不然引發的麻煩還不少呢! 從HTTP升級HTTPS之後,同步要更新的程序, 我們在下面先整理了一個精簡版的工作檢查清單跟大家分享:強制用.htaccess檔案來把每一個HTTP來的流量,導向到HTTPS的版本(這個之前的段落已經做過了)。

  將全站所有外掛的如Javascript,CSS等外部連結資源,也要全部更新為HTTPS的版本(不然會一直跳出錯誤)。

  網頁內文中,如果原本有寫過自家舊的HTTP連結網址,最好也要全部更新為HTTPS的版本。

在這個部分,如果大家使用的資料庫是MySQL的話,那麼可以參考我們之前有寫過的一篇:如何以MySQL內建功能來取代欄位中特定字串,在這篇文章中就有分享快速更新內文中所有連結的語法。

如果有登錄使用『Google網站管理員(SearchConsole)』的朋友,要將舊的網站移除,重新加入新的HTTPS的版本。

  延續上一項的清單,在SearchConsole中原本提交的Sitemap檔案,也先移除,重新提交一份新版的Sitemap,不然舊的Sitemap裡面還是舊的HTTP版本的連結。

  觀察一週,看看系統的ErrorLog有沒有任何相關的錯誤(很容易有500內部錯誤或是404找不到網頁)。

有計畫要升級HTTPS的朋友們,希望這次的分享對大家有幫助^^ 一起試試看吧!我們也有臉書專頁了,歡迎大家按讚加入喔:@5min.reading httpswebhtaccess 延伸閱讀:更多相關的主題文章[htaccess]2種禁止網站圖片被別人外連盜圖的方法,同時又不會檔掉Google圖片的搜尋[RWD]如何使用Mac上的Safari開發者工具,偵錯或微調iPhone行動版的網頁[CSS]網頁用的尺寸單位:PX跟EM怎麼區分呀?等等,還有一個REM...[CSS3:Word-Break]用CSS來設置中英文的文字斷行樣式[MySQLReplace]如何取代文字字串,讓MySQL資料庫欄位中特定字串變成新的文字[CSS]如何讓別人無法列印你的網頁,簡單一行CSS搞定[RWD]用Javascript來偵測是否為行動裝置最簡單的方法[CSS]Clippy:快速幫你製作CSSClip-Path圖片變形的雲端工具如何快速消除錯誤訊息:PHPDeprecated:Themysqlextensionisdeprecatedandwillberemovedinthefuture:usemysqliorPDOinstead[HTML5]Uploadify無法上傳,問題可能出在FlashPlayer ‹‹如何刪除Google搜尋紀錄,或是查詢所有在Google上的歷史活動呢?



請為這篇文章評分?