近兩年(nián)的情況表明,網站啓用https已是大勢所趨。但由于懶,一(yī)直沒有動作。在David Yin的激勵下(xià),終于在人際稀少的春節前夕把SEO每天一(yī)貼轉換成https了。
使用https加密目前看(kàn)有利有弊。利,首先是安全,減少被劫持、篡改的機(jī)會(huì)。弊,主要是速度上(shàng)的,由于證書驗證、多(duō)次握手、CPU消耗等原因,https頁面速度會(huì)被拖慢(màn)一(yī)點。但https無疑是未來趨勢。
改為(wèi)https對SEO按說應該有好處,不過實際情況如何還(hái)有待驗證。Google方面早就(jiù)表明https是排名因素之一(yī),雖然隻是個(gè)很小(xiǎo)因素。百度以前曾經提到(dào)過,百度不會(huì)主動抓取https頁面,但2015年(nián)百度站長(cháng)平台發布消息,百度對https頁面優先收錄、優先排名:
“從(cóng)相(xiàng)關性的角度,百度搜索引擎認為(wèi)權值相(xiàng)同的站點,采用https協議的頁面更加安全,排名上(shàng)會(huì)優先對待。此次技(jì)術(shù)升級之後,百度搜索将同一(yī)個(gè)域名的http版和https版作為(wèi)一(yī)個(gè)站點來處理,優先收錄https頁面;”
從(cóng)http改到(dào)https後的一(yī)段時間,搜索引擎需要重新抓取、判斷、計算(suàn),收錄,排名和流量都可能(néng)有起伏。說是起伏,恐怕主要是下(xià)降。雖然從(cóng)http版本全站做了301轉向到(dào)https版本,我們都知道,百度對301轉向處理很慢(màn)、很保守,需要持續觀察什麽時候能(néng)完成正确判斷并傳遞權重。Google也表明過,301轉向不能(néng)完全傳遞權重,是有損耗的。
就(jiù)SEO每天一(yī)貼來說,另一(yī)個(gè)可能(néng)造成麻煩的是,這個(gè)網站以前做過多(duō)次URL路(lù)徑變化和301轉向,還(hái)換過域名,現在再多(duō)加一(yī)次301轉向,多(duō)層轉向有可能(néng)造成搜索引擎不願意跟蹤,不能(néng)完全傳遞權重。本博客外鏈增加最多(duō)的時候還(hái)是剛剛開(kāi)博的頭兩年(nián),那時候的鏈接都是指向最早的URL的,到(dào)現在的https新URL,經過了3-4次轉向,這恐怕是搜索引擎會(huì)跟蹤的轉向數的上(shàng)限了。所以,可能(néng)會(huì)丢失一(yī)部分無法挽回的外鏈效果。
接下(xià)來本博客的主要關鍵詞排名可能(néng)會(huì)下(xià)降甚至消失一(yī)段時間,能(néng)不能(néng)恢複也是未知之數。但長(cháng)痛不如短痛,既然是趨勢,無論如何也得跟進。
簡單說一(yī)下(xià)把網站從(cóng)http轉換到(dào)https的過程,也許對讀(dú)者有借鑒意義。下(xià)面隻是我做轉換的過程,并不是最優方法,按說應該先在單獨的服務器(qì)上(shàng)測試https版本,我并沒有。公司網站最好更謹慎點。
購買SSL證書
這個(gè)是必須的,現在價格并不貴。到(dào)David Yin帖子看(kàn)一(yī)下(xià),便宜的3年(nián)隻是幾十塊錢(qián)。安裝SSL證書的技(jì)術(shù)問題,無法在這讨論了,不明白(bái)的問技(jì)術(shù)人員(yuán)吧(ba)。
備份、備份
這個(gè)也是必須的。對SSL安裝、服務器(qì)配置不熟悉的站長(cháng)來說,轉換過程不一(yī)定是那麽順利的。
新版本代碼改動
SL證書安裝後,https版本就(jiù)可以訪問了。原來網站上(shàng)的所有URL都需要改到(dào)https版本,包括鏈接、圖片、JS等,所以可能(néng)需要修改文章數據庫、模闆、插件(jiàn)等。
本博客使用WordPress,要在後台把博客地址改為(wèi)https版本:
這樣,絕大部分導航中的鏈接就(jiù)由WP系統自(zì)動改為(wèi)https版本了。但很可能(néng)還(hái)有一(yī)些導航性質的鏈接是硬編碼在模闆中的,比如這個(gè)博客帖子下(xià)面的版權聲明,那是人工(gōng)寫在模闆裡(lǐ)的,别忘了改。
帖子正文中人工(gōng)加的内部鏈接也需要自(zì)己改。如果使用了phpMyadmin,用下(xià)面指令跑一(yī)下(xià)數據庫就(jiù)行了:
update wp_posts set post_content = replace(
post_content, ‘http://www.seozac.com/’,
‘https://www.seozac.com/’);
帖子裡(lǐ)的圖片路(lù)徑也就(jiù)同時改了。
如果沒有使用數據庫管理工(gōng)具,寫個(gè)簡單php程序運行一(yī)下(xià)也可以。
因為(wèi)隻是用指令在數據庫執行了一(yī)下(xià),沒有也沒辦法人工(gōng)檢查所有頁面,可能(néng)有漏掉的鏈接、圖片之類的,讀(dú)者要是發現了,麻煩告訴我一(yī)下(xià)。
這裡(lǐ)我還(hái)遇到(dào)了些沒解決的問題。新浪微博組件(jiàn)和百度分享按鈕組件(jiàn)貌似都不支持https,原理上(shàng)應該可以把JS下(xià)載下(xià)來放(fàng)到(dào)自(zì)己服務器(qì)上(shàng),但暫時沒時間弄這個(gè),先拿掉了。
檢查新版本頁面源代碼
訪問一(yī)下(xià)https版本頁面,包括首頁、欄目頁、内頁、sitemap,查一(yī)下(xià)源代碼,看(kàn)看(kàn)還(hái)有沒有http地址的存在,不僅頁面可見(jiàn)部分,還(hái)得看(kàn)看(kàn)head部分,JS等,比如head裡(lǐ)的canonical标簽是否改到(dào)https版本了?程序生(shēng)成的sitemap裡(lǐ)的URL是否改為(wèi)https版本了?
全站301轉向
全站做http到(dào)https的301轉向。LAMP服務器(qì)為(wèi)例,在.htaccess文件(jiàn)中加:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.seozac.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^seozac.com [NC]
RewriteRule ^(.*)$ https://www.seozac.com/$1 [L,R=301]
這個(gè)代碼隻是舉例,也是我的博客用的實際代碼,還(hái)有其他寫法也可以,隻要實現了301就(jiù)行。
訪問原http版本頁面,檢查301是否生(shēng)效。
百度站長(cháng)平台和Google Search Console
搜索引擎抓取301轉向後,應該可以自(zì)行判斷網站已經從(cóng)http轉到(dào)https了。另一(yī)個(gè)通(tōng)知搜索引擎的方法是通(tōng)過站長(cháng)平台。
在Google Search Console中,把https網站加入并驗證,不需要使用Change of Address功能(néng)。可以在http及https版本的賬号下(xià),用Fetch as Googlebot功能(néng)看(kàn)看(kàn)兩種版本的URL是否返回正确頭信息和頁面源代碼。
百度站長(cháng)平台好像不支持兩個(gè)版本都加入站長(cháng)平台。不過在原來http賬号下(xià),管理站點屬性部分有這樣一(yī)個(gè)選項:
點這句話右面的設置按鈕,出來一(yī)個(gè)對話框,問是否确認支持https協議,點“是”後變成這樣:
希望這樣百度就(jiù)知道應該把http和https兩個(gè)版本動作一(yī)個(gè)網站處理。
持續觀察抓取、收錄、排名、流量
這是接下(xià)來兩三個(gè)月(yuè)要做的事(shì)了,以後有進展再來報(bào)告。
目前可以報(bào)告的是,原始日志(zhì)顯示,百度及Google蜘蛛都抓取正常,已經抓取了301及轉向後的頁面。我是26号淩晨4-6點安裝SSL證書、加301轉向的,26号中午Google已經索引了幾十個(gè)https頁面(然而,沒有首頁,可能(néng)對待首頁比較謹慎):
并且一(yī)些https頁面(并不是所有已經索引了的https頁面)已經進入排名,和原來的http版本位置基本是一(yī)樣的。
百度到(dào)目前為(wèi)止,還(hái)沒有索引https頁面。
盡量改正外部鏈接
可能(néng)的話,把外部鏈接改到(dào)新的https地址。