Feeder Ninja 建立側邊欄聯播網,輕鬆顯示網站、社交網路動態

很多人喜歡把自己訂閱的網站 RSS Feed 掛在部落格側邊欄,或是放上社交網路的動態(例如 Facebook、Twitter),能在瀏覽網站時直接看到其他新動態,之前透過 Google Reader 可以輕鬆辦到,但現在已經沒有 Google Reader 了,你知道要如何把 RSS Feed 轉為模組,以一段簡單的原始碼來內嵌到網站裡嗎?

如果你有這樣的需求,不妨試試看 Feeder Ninja,它是一款能把 RSS Feed 或社交網站轉為側邊欄模組的服務,支援一般 RSS Feed,以及 Facebook、Twitter、YouTube、Vimeo、Pinterest、Tumbor 和 WordPress 等資訊來源。使用者可以自己決定要顯示那個來源的資訊,是否顯示標題、高度,以及版面配色等等。

產生後的小工具(Widgets)使用最新的 HTML5 & CSS3 技術,搭配 Flexible Design,在任何的裝置上都能輕鬆閱讀,也不會破壞原有版面。

Feeder Ninja 提供免費及付費方案,免費方案只能建立 2 個 Feeds,可使用的配色和版面較少,如果你喜歡這項服務,也可以考慮升級 Premium ,升級後將不會顯示廣告、也有私人 Feed、自動更新和背景圖片上傳等功能,每月價格為 $3.99 USD、一年也只要 $39.99 USD,終身會員則是一次付清 $79.99 USD 。

我以免費資源網路社群的 RSS Feed 製作了一個 Feeder Ninja 範例,可以參考:http://feederninja.com/feeds/single/45702。

網站名稱:Feeder Ninja
網站鏈結:http://feederninja.com/

使用教學

開啟 Feeder Ninja 後,點擊首頁的 Start Now 開始。

建立一個新的 Feed 前,選擇資訊來源,目前支援 Facebook、Twitter、RSS、YouTube、Vimeo、Pinterest、Tumblr、WordPress,使用第三方服務可能需要授權,下面我會使用 RSS Feed 來做範例教學。

填入你要聯播顯示的 RSS Feed 網址。

接下來 Feeder Ninja 就會去抓取你的資訊來源,產生一個 Feed 預覽畫面,在這裡可以調整、設定包含資訊來源、標題、是否顯示標題、高度、文字方向等等,修改後右方的預覽會立即更新。

Feeder Ninja 提供不一樣的版型和佈景主題,供使用者切換和修改,不過免費方案能使用的版型只有兩種,佈景主題配色也只有黑色和灰色。

最後點擊 Save & Get Code 可以儲存,並取得原始碼。第一次使用需要註冊 Feeder Ninja 會員,然後到信箱收取驗證信,點擊確認鏈結才算啟用帳戶,啟用後回到原設定頁面,重新整理即可取得原始碼,如下圖所示。

Feeder Ninja 的原始碼分為兩部分,第一部分要貼在欲顯示側邊欄模組的位置,然後在把第二段 js 程式碼貼入網頁裡,就能顯示你在 Feeder Ninja 製作的側邊欄模組。

不僅如此,Feeder Ninja 也有提供簡單的統計數據,登入後點擊左上角的 Dashboard,進入控制台就可以看到囉!

另外,如果你是使用 WordPress 自行架站的話,Feeder Ninja 也提供 WordPress 外掛,讓你可以輕鬆在網站側邊欄置入 Feeder Ninja 產生的聯播網。

  • 按一下以分享至 Facebook(在新視窗中開啟)
  • 分享到 Twitter(在新視窗中開啟)
  • 分享到 LinkedIn(在新視窗中開啟)
  • 分享到 Pinterest(在新視窗中開啟)
  • 分享到 Pocket(在新視窗中開啟)

相關文章

本站聲明:網站內容來源免費資源網路社群https://free.com.tw,如有侵權,請聯繫我們,我們將及時處理

【精選推薦文章】

如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

想要讓你的商品在網路上成為最夯、最多人討論的話題?

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!

記一次微信網頁授權后獲取用戶信息並重定向

記一次微信網頁授權后獲取用戶信息並重定向

微信公眾號開發還是比較簡單的,但是寫完之後就忘記了。每次寫還要重新查文檔,所以這次吧開發過程記錄起來,有些細節問題也記錄下來,以後用到就方便了。

需求:

  • 能獲取用戶基本信息。
  • 獲取微信信息的時候,從哪個頁面來,最後到哪個頁面去。
  • 調用方式要簡單。

思路:

因為之前寫過幾次,思路還是很清楚的,大概有一下幾個步驟:

  1. 提供一個鏈接,帶有一個redirect_url參數,代表在獲取用戶信息后要返回的頁面。
  2. 在上一個鏈接中跳轉進行微信網頁授權。
  3. 授權成功后獲取code。
  4. 通過code調用微信接口獲取access_token。
  5. 通過access_token獲取用戶基本信息。
  6. 將用戶信息拼在之前定義的redirect_url中,並重定向到redirect_url。

實現:

思路有了下面就開始實現這個思路

1:

首先定義一個方法,接收redirect_url參數,並在這個方法中跳轉到微信授權頁面。

這裏我們需要完成思路中1,2的步驟。

注意:

在瀏覽器中調用方法的時候redirect_url參數要經過 URLEncoder.encode

在方法中接收的redirect_url參數任然需要經過URLEncoder.encode,因為在作為參數接收到的時候,這個參數已經變成正常的http鏈接了。

在拼裝微信重定向地址的時候,需要再次URLEncoder.encode


//微信網頁授權地址
private String getWechatCodeUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?" +
        "appid=[APPID]&" +                  //微信appid
        "redirect_uri=[REDIRECT_URI]&" +    //獲取網頁授權后,微信重定向地址
        "response_type=code&" +
        "scope=snsapi_userinfo&" +          //授權方式
        "state=STATE#wechat_redirect";

//微信授權后返回的地址
private String getCodeUrl = "項目域名" +
        "redirect/code?redirect_url=";

//提供的獲取用戶信息的地址
@GetMapping("/redirect")
    public String redirect(
            @RequestParam(name = "redirect_url", defaultValue = "", required = false) String redirectUrl
    ) throws UnsupportedEncodingException {
        //默認值,前端首頁地址
        if (StringUtils.isBlank(redirectUrl)) {
            redirectUrl = webSite;
        }
        //一次編碼
        redirectUrl = URLEncoder.encode(redirectUrl, "utf-8");
        //二次編碼
        redirectUrl = URLEncoder.encode(getCodeUrl + redirectUrl, "utf-8");
        //最終得到的微信獲取微信授權地址
        String url = getWechatCodeUrl
            .replace("[APPID]", appid)
            .replace("[REDIRECT_URI]", redirectUrl);
        logger.info("redirecturl: {}", url);
        return "redirect:" + url;
    }

2:

這裏要在定義一個鏈接,就是上一步要讓微信跳轉回來的地址。這裏微信會攜帶一個code參數,由於在上一步我們將redirect_url地址進行了兩次編碼,所以在這個方法中redirect_url也會傳遞進來。

着這個方法中我們需要完成思路中 4,5,6的步驟

//獲取access_token的接口地址,這裏還可以獲取到openid
private String getAccessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?" +
        "appid=[APPID]&" +      //微信的appid
        "secret=[SECRET]&" +    //微信的secret
        "code=[CODE]&" +        //重定向後微信攜帶的code參數
        "grant_type=authorization_code";

//獲取微信用戶基本信息的接口地址
private String getWechatUserUrl = "https://api.weixin.qq.com/sns/userinfo?" +
        "access_token=[ACCESS_TOKEN]&" +    //獲取到的 access_token
        "openid=[OPENID]&" +                //公眾號的 openid
        "lang=zh_CN";

//這裏的地址由微信重定向跳轉,攜帶code參數。
@GetMapping("/redirect/code")
public String getCode(
        @RequestParam(name = "redirect_url", defaultValue = "", required = false) String redirectUrl,
        @RequestParam(name = "code", defaultValue = "", required = false) String code
) throws UnsupportedEncodingException {
    logger.info("redirect_url: {}", redirectUrl);
    logger.info("code: {}", code);
    if (StringUtils.isBlank(code)) {
        logger.error("獲取code失敗");
        return "redirect:" + redirectUrl + "?error=code-is-null";
    }
    //解碼重定向地址
    redirectUrl = URLDecoder.decode(redirectUrl, "utf-8");
    //根據code獲取微信相關信息
    String apiUrl = getAccessTokenUrl
            .replace("[APPID]", appid)
            .replace("[SECRET]", secret)
            .replace("[CODE]", code);
    String res = HttpUtils.doGet(apiUrl, new HashMap<>());
    JSONObject resJson = JSONObject.parseObject(res);
    //請求失敗
    if (resJson.containsKey("errmsg")) {
        logger.error("獲取access_token失敗," + res);
        return "redirect:" + redirectUrl + "?error=" + resJson.getString("errmsg");
    }
    //獲取微信用戶信息
    String getUserUrl = getWechatUserUrl
            .replace("[ACCESS_TOKEN]", resJson.getString("access_token"))
            .replace("[OPENID]", resJson.getString("openid"));
    String user = HttpUtils.doGet(getUserUrl, new HashMap<>());
    JSONObject userJson = JSONObject.parseObject(user);
    if (userJson.containsKey("errmsg")) {
        logger.error("獲取access_token失敗," + res);
        return "redirect:" + redirectUrl + "?error=" + userJson.getString("errmsg");
    }
    //這裏直接將微信用戶信息編碼后重定向給最開始的redirect_url
    return "redirect:" + redirectUrl + "?wechat_user=" + URLEncoder.encode(user, "utf-8");
}

完成:

這裏就已經開發完成了,發布到線上后訪問:

[域名]/redirect?redirect_url=[需要轉到的地址]

后,在獲得用戶授權後會跳轉

[需要轉到的地址]?wechat_user=[URLEncoder.encode后的微信用戶信息]

https://www.cnblogs.com/hebaibai/p/11089318.html

【精選推薦文章】

如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

想要讓你的商品在網路上成為最夯、最多人討論的話題?

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!

我的新書《WordPress Plugins 百大外掛精選》已經上市,轉貼就有機會免費帶回家!


我的新書《WordPress Plugins 百大外掛精選》已經上市,轉貼就有機會免費帶回家!

最近 Pseric 再度完成一本著作,這次把主題鎖定在熱門的開放原始碼程式 WordPress,相信有架站經驗的朋友一定對它不陌生。為什麼會以此作為主題呢?其實也和我相當喜愛且熱衷於 WordPress 有關,例如你正在閱讀的免費資源網路社群,就是以 WordPress 平台來架設,從 2008 年我便開始接觸,期間也參與 WordPress Taiwan 正體中文的計畫。

這一路走下來,投入不少時間及心力,對於 WordPress 相關知識也有著一定程度的瞭解,這幾年陸續和其他部落客共同合作出版與 WordPress 相關的書籍,在無名小站關站前也寫過一系列的「無名小站專題」,便推薦以 WordPress 作為新家,例如無名搬家到自架 WordPress,我推薦的五個虛擬主機服務、自架 WordPress 虛擬主機租用教學,將網誌備份匯出、匯入到新家等幾篇文章。

曾有人問我:為什麼這麼喜歡 WordPress?其實答案很簡單,因為我想把這個簡單、好用,自己也熱愛的工具介紹給更多人知道,而這也和我當初創立免費資源網路社群的初衷不謀而合。

特色是什麼?

《WordPress Plugins 百大外掛精選》由博碩文化出版,一共精選 100 個 WordPress 外掛,是我花了幾年時間所換得的經驗和使用心得,全部沒有私藏、完整寫在這 528 頁裡,無論你是 WordPress 初學者,或者本身已經開始以 WordPress 架設或經營網站,我都希望藉由這本書能帶給你一些新的點子,從中找出你可能原本不知道、卻對你網站有正面幫助的外掛功能。

那裡可以買到?

本書上市日期為 2 月 26 日,於各大實體書店、網路書店通路,應該都能找到《WordPress Plugins 百大外掛精選》,如果你不確定要怎麼購入,我也準備好了博客來的購書鏈結,你可以直接點選進入。

購書鏈結:《WordPress Plugins 百大外掛精選》

感謝大家支持,加碼送書活動開始

是的,依照往例我們又向出版社凹了一些好康,來造福免費資源網路社群的讀者,感謝博碩文化提供本次贈品,我會在活動結束後抽出幸運讀者,只要參加就有機會免費獲得《WordPress Plugins 百大外掛精選》,先來不一定會中獎,但晚來錯過就沒了。

步驟一:請大家幫免費資源網路社群 Facebook 粉絲頁面按個讚(拜託拜託!),如果你有使用 Twitter、Google+ 的話,也可以一併加入追蹤,我們會同步推送新的免費資源給大家,非常感謝。

步驟二:點擊底下的按鈕來轉貼、分享這篇文章。

最後別忘記在本文下方留言,寫下「新書《WordPress Plugins 百大外掛精選》已經上市,轉貼就有機會免費帶回家!」,我會在五天後(3/4)抽出幸運的朋友共 10 位,請大家多多把握這次難得的機會。

備註:如果你的留言沒有馬上顯示,屬正常現象,稍後就會出現,請勿重複留言,謝謝。

得獎名單(3/4 更新)

本次活動結束。經過加總參與此活動總人數為 100 人,以 RANDOM.ORG 隨機排列並抽取最前面十位讀者贈送《WordPress Plugins 百大外掛精選》一本,幸運得獎的朋友為:賴熱情、Liu Crown-Jie、Li Jia-ji、吳堯宗、狩月望、李木宏、Ko Wing Ting、傅仕璁、Innominate Hsieh、洪群哲(以抽出順序排列)。

請幸運中獎的讀者儘速以訊息方式和免費資源網路社群聯繫,或是透過 E-mail (寄至 [email protected],必須使用和你留言時相同的信箱,以便我確認身分)把相關資料寄給我,麻煩要提供您的姓名、Email 以及地址含郵遞區號讓我可以寄送贈品,謝謝。

  • 按一下以分享至 Facebook(在新視窗中開啟)
  • 分享到 Twitter(在新視窗中開啟)
  • 分享到 LinkedIn(在新視窗中開啟)
  • 分享到 Pinterest(在新視窗中開啟)
  • 分享到 Pocket(在新視窗中開啟)

相關文章

本站聲明:網站內容來源免費資源網路社群https://free.com.tw,如有侵權,請聯繫我們,我們將及時處理

【精選推薦文章】

如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

想要讓你的商品在網路上成為最夯、最多人討論的話題?

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!

從 Blogger 自訂網址搬家到自架 WordPress,六步驟不求人教學

本文參考資料為 How to Move your Blogger Blog on Custom Domain to WordPress, 已取得原作者 Amit Agarwal 授權。

本文會教你如何從你的自訂網域名稱 Blogger 搬家到自架 WordPress,且無須擔心流量下降,或是影響你的 Google 搜尋引擎排名。

如果你是以 Blogger 來架設部落格,使用了自訂網址,當你有天發現 Blogger 已經不敷使用,或是想換到更自由的平台,自架 WordPress 就是不錯的選擇。若你已經發佈數百篇的文章、相片,或是有許多珍貴的留言,你可以把它們全部移動到 WordPress。

WordPress 平台提供快速、簡單的 Blogger 匯入工具,將 Blogger 網誌文章、迴響及使用者匯入自架的 WordPress,最大的問題是會不會失去 Google 或其他搜尋引擎來的流量,其實只要按照本文的方法,可以讓網站繼續在 Google 取得好的排名(甚至比 Blogger 還要更理想)。

從 Blogger 搬家到 WordPress

好消息是如果你已經在 Blogger 使用自訂網址,你可以非常輕易地把它搬到 WordPress 且不會影響到你的搜尋引擎排名。因為 WordPress 允許使用者自訂跟 Blogger 相同的固定鏈結結構,這就表示即使把網站移到新的平台,也不會讓搜尋引擎和你現有的部落格讀者感覺到任何差異。

本教學僅適用於「使用自訂網址的 Blogger」。如果你的部落格使用的是 blogspot.com 或 blogspot.tw,請參考影片說明(英文)。

1. 移除 Blogger 重新導向

你的 Blogger 目前使用重新導向的方式,將進入 blogspot.com 的流量全數導向你所設定的自訂網址,第一件事就是把它從設定裡移除。前往你的 Blogger 控制台,選擇你的部落格後選擇「設定」,點選網誌網址後方的「編輯」,取消勾選「重新導向」選項,然後儲存你的變更。

 

2. 更新網域名稱的 DNS 記錄

當你從 Blogger 設定好自訂網址後,你必須去網域名稱註冊商變更 DNS 記錄,讓它對應到新的伺服器。因為我們將搬移到自架的 WordPress,原有的 Google 記錄也需要從 DNS 內移除。

前往你的網域名稱註冊商,從控制台找到 DNS 設定,將指向 ghs.google.com*.googlehosted.com 兩個 CNAME 記錄移除。同時也可能要移除指向 Google 的 A 記錄,例如 IP 位址 216.239.32.21, 216.239.34.21 等等。

接下來,你需要變更網域名稱的 A 記錄,讓它對應到你的虛擬主機 IP 位址,等候 DNS 更新(可能需要一個小時),直到網址可以連線到你的虛擬主機。

繼續閱讀:

  • 從無名小站搬家前,你應該先註冊一個自己的網址!四個推薦的網域名稱註冊商

 

3. 以你的網域名稱安裝 WordPress

大多數的虛擬主機商都有提供簡單、快速的 WordPress 安裝工具,方便你將 WordPress 安裝到你的網域名稱,或是子網域。如果這不是你要的,你也可以從 WordPress Taiwan 正體中文來下載 WordPress,將它以 FTP 或其他方式上傳到虛擬主機。我先前寫過一篇自架 WordPress 虛擬主機租用教學,裡頭有詳細的安裝教學。

繼續閱讀:

  • 無名搬家到自架 WordPress,我推薦的五個虛擬主機服務
  • 自架 WordPress 虛擬主機租用教學,將網誌備份匯出、匯入到新家

 

4. 把 Blogger 的資料匯入 WordPress

安裝完 WordPress 後,開啟你的 WordPress 控制台,從「工具」->「匯入」來選擇 Blogger 匯入選項。外掛安裝完成後,選擇「啟用外掛」並執行匯入程式,WordPress 需要能存取你 Blogger 帳戶的權限,依照指示選擇你想搬家的 Blogger 網站即可。

WordPress 會開始分析、擷取你 Blogger 網誌的文章、照片和迴響。如果匯入遇到問題,你可以重新整理網頁,它會從停止的地方繼續,匯入的過程需要一段時間,這時間取決於你要搬移的資料大小。

 

5. 更新 WordPress 固定網址

當 Blogger 匯入 WordPress 的操作完成,我們需要變更 WordPress 預設的固定網址格式,讓它看起來跟 Blogger 的格式一樣。前往「設定」->「固定網址」,將以下的格式複製、貼上於「自訂結構」後方的輸入框,然後儲存變更。

/%year%/%monthnum%/%postname%.html

這不是最好的固定網址格式,但可以維持你部落格的搜尋引擎流量(SEO),避免因為更換平台而造成流量損失。

 

6. 重新導向 RSS Feeds

開啟你 WordPress 部落格根目錄的 .htaccess 檔案,將以下程式碼複製、貼上。這個作用是將原先存取你 Blogger RSS Feeds 的使用者重新導向新的 WordPress RSS Feeds,這個重新導向也會協助訂閱者來取得你的最新內容。

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteRule atom.xml /feed? [L,R=301]
 RewriteRule rss.xml /feed? [L,R=301]
 RewriteRule ^feeds/posts/?.*$ /feed? [L,R=301]
 RewriteRule ^feeds/comments/?.*$ /comments/feed? [L,R=301]
</IfModule>

如果你的 WordPress 根目錄沒有 .htaccess 檔案,你可以使用 Vim 或任何文字編輯器來手動建立一個。

 

Blogger 到 WordPress — 下一步

現在,你的 Blogger 已經成功搬家到 WordPress,你可以將舊的 Blogspot.com 部落格關閉,因為它也只是你 WordPress 網站的副本。

不建議直接刪除舊的部落格,我們可以把它設定為「私人」,其他人就無法看到你 Blogger 的內容。前往 Blogger 控制台,從「網誌讀者」選擇「私人 – 僅限網誌作者」,搜尋引擎和讀者若連往你的舊部落格,就無法瀏覽任何文章。

延伸閱讀:

  • 如何挑選一個適合你的虛擬主機服務?我參考的七個比較項目
  • 安裝 WordPress 後必做的 30 件事 | WordPress 中文指南
  • 按一下以分享至 Facebook(在新視窗中開啟)
  • 分享到 Twitter(在新視窗中開啟)
  • 分享到 LinkedIn(在新視窗中開啟)
  • 分享到 Pinterest(在新視窗中開啟)
  • 分享到 Pocket(在新視窗中開啟)

相關文章

本站聲明:網站內容來源免費資源網路社群https://free.com.tw,如有侵權,請聯繫我們,我們將及時處理

【精選推薦文章】

如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

想要讓你的商品在網路上成為最夯、最多人討論的話題?

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!

9 個提升 WordPress 網站安全性的方法

本文參考資料為 How to Improve the Security of your WordPress Blog, 已取得原作者 Amit Agarwal 授權。

大約一個月前,這個部落格被黑客入侵(編按:Amit Agarwal 的網站)。而其他託管於相同主機商的網站像是 ctrlq.org 和 hundredzeros.com 也深受其害,黑客成功從網路上拿下了這些網站。

託管網站的主機商表示這可能發生於某些使用舊版的 WordPress 網站,導緻密碼不幸洩漏,這段時間雖然歷經一些艱難,但幸運的是被刪除的網站已經回復,且流量也回到正常。

以下是我所做的變更,用來提高我的 WordPress 網站安全性,縱使這樣的意外可能再次發生。

#1 使用你的 Email 作為登入帳號

當你安裝完一個 WordPress 網站時,預設的第一位用戶為 “admin”。你應該建立不同的使用者名稱來管理你的 WordPress 網站,並將預設使用者 “admin” 刪除,或是將它的權限從「系統管理員」降級為「讀者」。

你也可以建立一個完全亂數(難以被猜中)的使用者名稱,然後使用你的 Email 來登入 WordPress。外掛 WP-Email Login 可以加入此支援,使用你的 Email 取代帳號登入。

#2 不要向全世界展示你的 WordPress 版本

WordPress 網站會在原始碼顯示版本號,讓其他人能夠知道你正在執行舊的 WordPress。

要從網頁裡移除 WordPress 版本是很簡單的一件事,但你需要做一些額外的補強,從你的 WordPress 目錄將 readme.html 檔案刪除,因為它也會把你所使用的 WordPress 版本展示給全世界。

#3 別讓其他人擁有”寫入”你 WordPress 目錄的權限

登入你的 WordPress 網站 Linux 系統列,執行以下指令來取得所有「公開」、其他用戶皆能寫入的目錄清單。

find . -type d -perm -o=w

你也許可以執行以下兩行指令,來將你 WordPress 內的檔案和目錄設定為正確的權限(參考資料)。

find /your/wordpress/folder/ -type d -exec chmod 755 {} \;
find /your/wordpress/folder/ -type f -exec chmod 644 {} \;

對目錄來說,755(rwxr-xr-x) 意味著只有擁有者具備寫入權限,其他人只有讀取和執行的權限。對檔案來說,644 (rw-r–r–) 意味著只有檔案擁有者具備讀取和寫入權限,其他人為唯讀。

#4 重新命名你的 WordPress 資料表前綴

如果你使用預設選項來安裝 WordPress 的話,你的 WordPress 資料表應該會像是 wp_posts 或 wp_users。將資料表的前綴(wp_)更改為其他隨機值是比較好的作法,外掛 Change DB Prefix 可以讓你在彈指之間重新命名你的資料表前綴。

#5 防止使用者瀏覽你的 WordPress 目錄結構

這很重要。開啟你 WordPress 根目錄底下的 .htaccess 檔案,然後在最上方加入這行。

Options -Indexes

這能夠防止其他人在能建立檔案清單時看到你資料夾內的所有檔案。例如目錄下缺少預設的 index.php 或 index.html 時。

#6 更新 WordPress 安全密鑰

開啟此網頁來為你的 WordPress 網站產生八組安全密鑰。開啟 WordPress 目錄下的 wp-config.php 檔案,將預設的密鑰以產生的密鑰取而代之。

這些隨機的字串能使你儲存於 WordPress 的密碼更加安全,另一個好處是,當有人在你不知情的情況下登入 WordPress,他們將會被立即登出,使他們的 cookies 失效。

#7 保留 WordPress PHP 和資料庫錯誤記錄

從錯誤記錄有時候可以發現針對你 WordPress 所發出的無效資料庫查詢或檔案查詢。我更喜歡外掛 Error Log Monitor,因為它能定期透過 Email 發送錯誤日誌到你的信箱,也能顯示於你的 WordPress 控制台。

要在 WordPress 啟用錯誤日誌功能,將以下程式碼加入你的 wp-config.php 檔案,記得要把 /path/to/error.log 替換為你的日誌文件實際路徑。error.log 應該放在無法直接從瀏覽器存取得到的目錄。(參考資料)

define('WP_DEBUG', true);
if (WP_DEBUG) {
 define('WP_DEBUG_DISPLAY', false);
 @ini_set('log_errors', 'On');
 @ini_set('display_errors', 'Off');
 @ini_set('error_log', '/path/to/error.log');
}

#8 以密碼保護 Admin 控制台

使用密碼來保護 wp-admin 目錄是一個不錯的方法,因為瀏覽你的公開 WordPress 網站並不需要用到這目錄下的任何檔案。一旦設定完成,即使是授權的用戶也需要輸入兩道密碼才能登入他們的 WordPress 控制台。

#9 追蹤你的 WordPress 伺服器登入動態

你可以在 Linux 下使用 “last -i” 指令來列出所有登入你 WordPress 伺服器的使用者,包括他們的 IP 位址。如果你發現清單內有未知的 IP 來源,那肯定要修改密碼了。

此外,下面的指令將顯示較長時間區間的登入動態,並使用 IP 位址分組(將 USERNAME 改為你的使用者名稱)。

last -if /var/log/wtmp.1 | grep USERNAME | awk '{print $3}' | sort | uniq -c

使用外掛來監控你的 WordPress 網站

WordPress.org 外掛庫包含不少好用的安全相關外掛,可以持續監控你的 WordPress 網站是否有被入侵,或是其他可疑活動。這些是我會建議使用,也較為基本的安全外掛。

  1. Exploit Scanner – 它會迅速掃描你的所有 WordPress 檔案和文章,並列出潛藏惡意程式碼的。例如垃圾鏈結可能會使用 CSS 或 IFRAME 方式隱藏在你的 WordPress 網誌文章裡,而這個外掛可以將它們找出來。
  2. WordFence Security – 這是一個非常強大、且應該使用的安全外掛。它會比對你 WordPress 的核心檔案和原始檔案間是否已被修改。而且,該外掛會鎖定嘗試登入你的網站卻失敗的使用者。
  3. WordPress Sentinel – 另一個實用的外掛,可以監控你的 WordPress 檔案,當有任何檔案被加入、刪除或修改時會發出警告。
  4. WP Notifier – 如果你不常登入你的 WordPress 控制台,那這外掛適合你。它會在你安裝的佈景主題、外掛和 WordPress 核心有新的更新時以 Email 通知你。
  5. VIP Scanner – “官方”安全外掛將掃描你的 WordPress 佈景主題有無任何問題,它也能檢測出有無任何的廣告程式碼被注入你的 WordPress 佈景主題裡。

小技巧:你也可以使用以下 Linux 指令來列出近三天被修改的檔案清單。將 mtime 改為 mmin 可以看到 “n” 分鐘前被修改的檔案清單。

find . -type f -mtime -3 | grep -v "/Maildir/" | grep -v "/logs/"

提高 WordPress 登入頁面安全性

你的 WordPress 登入頁面是每個人都可以存取的,但如果你想防止未授權的使用者登入 WordPress,你有以下三種選擇。

  1. 使用 .htaccess 加入密碼保護 – 在 WordPress 認證以外加入另一道帳號密碼來保護你的 wp-admin 目錄。
  2. Google Authenticator – 這出色的外掛能為你的 WordPress 加入兩步驟驗證功能。除了輸入正確的密碼外,還必須搭配手機應用程式來輸入隨機產生的驗證碼。
  3. Login Dongle – 這個外掛使用一個非常獨特的方法來保護你的 WordPress。它能產生一個書籤列(加上秘密問題),你可以將它加入瀏覽器。當你要登入 WordPress 時,輸入你的密碼並按下書籤列才能登入 WordPress – 登入頁面的按鈕將無法使用。

深入閱讀:

  • 安裝 WordPress 後你應該做的 25 件事
  • 按一下以分享至 Facebook(在新視窗中開啟)
  • 分享到 Twitter(在新視窗中開啟)
  • 分享到 LinkedIn(在新視窗中開啟)
  • 分享到 Pinterest(在新視窗中開啟)
  • 分享到 Pocket(在新視窗中開啟)

相關文章

本站聲明:網站內容來源免費資源網路社群https://free.com.tw,如有侵權,請聯繫我們,我們將及時處理

【精選推薦文章】

如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

想要讓你的商品在網路上成為最夯、最多人討論的話題?

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!

11 個強化 WordPress 網站安全的 .Htaccess 設定技巧

本文參考資料為 WordPress Htaccess Tips And Tricks, 原作者 Kevin Muldoon。

.htaccess 是一個設定檔,讓你可以控制該路徑下的檔案及資料夾,以及所有子目錄。這個檔案名稱是由 hypertext access 而來,能為大多數的伺服器環境使用。

對於許多 WordPress 使用者來說,他們第一次看到 .htaccess 檔案應該是在自定他們網站的固定網址時。為了使用更美觀的鏈結,而不是預設的鏈結格式(例如:https://free.com.tw/sample-post/ 而不是 https://free.com.tw/?p=123 ),我們必須將以下程式碼加入 .htaccess 檔案:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

如果 .htaccess 不存在,你可以自己建立一個然後將它上傳。你需要做的只有建立一個空白的文字檔,將它儲存為 .htaccess 然後上傳到網站的根目錄。請確認在檔案的開頭有一個點,是不可漏掉的。

你也必須確認你的 .htaccess 檔案是伺服器可寫入的,WordPress 才能將適當的程式碼加入你的 .htaccess 。WordPress.org 建議把檔案權限設定為 644 。

.htaccess 檔案不僅用於固定網址,該檔案也能強化網站安全。數以百萬的 WordPress 用戶利用它來保護網站免於垃圾郵件發送者、黑客和其他已知的威脅。

在本文裡,我會分享一些用於 .htaccess 的程式碼片段,可以強化你的網站安全。相信你會找到一些對你有幫助的程式碼。

你可能也注意到上面固定網址的 .htaccess 程式碼是包覆於 #BEGIN WordPress 及 #END WordPress 裡。WordPress 可以更新這個標籤裡的程式碼,你必須把要新增的程式碼片段放置於你的 .htaccess 檔案的頂部或底部(在 #BEGIN WordPress 之前或 #END WordPress 之後)。

請注意…

.htaccess 是 WordPress 裡個性倔強的檔案,只要其中任何一個字符出錯,檔案就會出現錯誤。當錯誤發生時,它通常會影響到整個網站的運作,最重要的是你必須確保輸入 .htaccess 的程式碼沒有問題。

在開始前,備份一下你當前使用的 .htaccess 檔案吧!將它保存到你電腦裡安全的位置。如果可以,也能在雲端硬碟備份一份。

無論何時更新了你伺服器上的 .htaccess 檔案,記得回到網站重新整理一下,看看網站是不是還能正常運作。不要跳過這個步驟,因為確認網站運作正常是至關重要的一個步驟。如果你的網站給你一個白畫面,立即回復、還原 .htaccess 修改前的上個步驟。

如果你無法還原你的備份,那麼將伺服器上的 .htaccess 刪除,然後建立一個空白的 .htaccess 檔案並將它上傳。這將協助你使你的網站回復連線;當你的網站出現問題,這顯然是最重要的一步。

 

1. 保護 .htaccess

既然 .htaccess 擁有你整個網站的控制權,保護它遠離不相關人士就顯得很重要。以下的程式碼將讓黑客無法存取你的 .htaccess 檔,只需要透過 FTP 來修改 .htaccess 檔案(或是控制台的檔案管理)。

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

 

2. 保護 WP-Config.php

另一個重要的檔案是 wp-config.php。這個檔案裡包含資料庫的登入資訊,以及其他的系統設定。因此,明確的作法是禁止任何人訪問它。

<files wp-config.php>
order allow,deny
deny from all
</files>

 

3. 保護 /Wp-Content/

wp-content 資料夾也是 WordPress 相當重要的一部分,在這個資料夾裡包含了你的佈景主題、外掛、上傳的媒體檔案(圖片、影片)及快取檔案。

有鑑於此,這通常也是黑客下手的目標。當垃圾郵件發送者試圖破壞你的老網站,他必須將郵件程式傳到你的上傳資料夾。然後使用你的伺服器來寄送垃圾郵件;這麼做會使你的伺服器被列入垃圾郵件名單。

你可以透過創建一個獨立的 .htaccess 檔案來解決類似問題:

Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
Allow from all
</Files>

你必須將 .htaccess 檔案獨立上傳到 wp-content 主目錄,例如 www.yourwebsite.com/wp-content/。這麼做只會允許 XML、CSS、JPG、JPEG、PNG、GIF 和 JavaScript 被上傳到媒體資料夾,其餘的檔案類型將被拒絕。

 

4. 保護 Include-Only 檔案

某些檔案是絕不用讓使用者存取的。你可以加入以下程式碼,來阻擋使用者存取這些檔案:

# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

 

5. 限制存取 WordPress 控制台

另一個黑客覬覦的目標是 WordPress 控制台。如果他們獲取了存取該區域的權限,他們就可以在你的網站上為所欲為。

確保 WordPress 控制台更加安全,建立一個 .htaccess 檔案並加入以下程式碼:

# Limit logins and admin by IP
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 12.34.56.78
</Limit>

請務必將 12.34.56.78 更改為你的 IP 位址(你可以在 What is My IP? 找到你的 IP Address),然後將它上傳到網站的 /wp-admin/ 路徑下,例如 www.yourwebsite.com/wp-admin/ 。

只有你能夠存取 WordPress 控制台,其他人將會被阻擋在外。

其他的管理員或作者的 IP 可以加在後面,你可以在 allow from 後面加入其他 IP,不同的 IP 間使用半形逗號來區隔,例如:

allow from 12.34.56.78, 98.76.54.32, 19.82.73.64

 

6. 封鎖某人進入你的網站

如果你知道某個來者不善的 IP 位址,你可以使用以下的程式碼將它拒於網站之外。舉例來說,你可以封鎖某些留下垃圾留言或是嘗試存取你 WordPress 控制台的使用者。

<Limit GET POST>
order allow,deny
deny from 123.456.78.9
deny from 987.654.32.1
allow from all
</Limit>

 

7. 將使用者傳送到維護頁面

一些維護外掛像是 Ultimate Maintenance Mode 和 Mainteance 相當實用,當你在維護網站時,可以顯示一個暫時的頁面給使用者,或是在你更新網站時。

不幸的是,維護外掛只有在你的網站運作正常時才起得了作用。

如果你想未雨稠繆,我建議你建立一個基本的 .html 頁面,將它命名為 maintenance.html 來提醒使用者目前網站遭遇一些問題,但會在短時間內恢復連線。當你的網站掛掉時,只要將以下程式碼加入你的 .htaccess 檔案,就能將所有流量引導至維護畫面。

RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L]

你必須要為你的網站來自定上方程式碼。變更上方的檔案名稱,來符合你的維護頁面路徑,你也必須加入你的 IP 位址,以便在維護狀態時不會被引導至維護頁面(讓你可以繼續調整網站),以上代碼使用 302 轉址確保維護頁面不會被搜尋引擎索引。

 

8. 禁止瀏覽目錄

讓未經授權的使用者瀏覽目錄下的檔案或資料夾是相當危險的一件事情。如要禁止訪問你網站的目錄,只要在你的 .htaccess 加入以下程式碼即可:

# disable directory browsing
Options All -Indexes

 

9. 允許瀏覽器快取

當啟動瀏覽器快取功能後,將允許使用者從你的網站儲存元件,而無須重新下載。

它用於設計元素,例如 CSS 樣式表和其它媒體內容,例如圖片。這是一個實用的技巧,因為當圖片上傳到網站後,很少會再次更新。瀏覽器快取能讓訪客直接讀取儲存在他們電腦裡的圖片,而不用從你的伺服器下載,節省頻寬、也提升了頁面載入速度。

啟用瀏覽器快取,你需要做的就是把以下程式碼加入 .htaccess 檔案:

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
 ## EXPIRES CACHING ##

 

10. 重新導向一個網址

301 重新導向讓你可以通知搜尋引擎該鏈結已經重新移到新的路徑。它可以被用來重新導向一個網址、資料夾,甚至是一整個網站。

因此,它常被用於網址發生變化時,例如變更網域名稱、變更固定網址結構,或是變更頁面名稱(例如將頁面名稱從 my-news 變成 mygreatnews)。

要重新導向某個路徑,你需要做的就是加入以下程式碼:

Redirect 301 /oldpage.html http://www.yourwebsite.com/newpage.html
Redirect 301 /oldfolder/page2.html /folder3/page7.html
Redirect 301 / http://www.mynewwebsite.com/

 

11. 禁止直接連結圖片

直接連結的意思是某人直接取用你的圖片鏈結,然後將它分享到其他網頁上。這常發生在討論區,但大多數的網站擁有者仍然會這麼做。直接連結可能對你的網站帶來負面影響,包括使你的網站變慢,也會讓你的頻寬費用增加。

你可以禁止除了你的網站外的網站直接連結圖片,將以下程式碼加入即可。請確認將以下網址更改為你的網址。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherwebsite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/g7ptdBB.png [NC,R,L]

當其他人試圖從其他網址瀏覽你的圖片時,他們將會看到禁止圖片,而這圖片可以變更為任何你想要的圖(在上面的最後一行設定圖片路徑)。

禁止直接連結可能導致一些 RSS 閱讀器無法顯示你 RSS Feed 裡的圖片。

希望以上的 .htaccess 檔案技巧對你有所助益。如你所見,它是一個可以完成許多工作的設定檔。

  • 按一下以分享至 Facebook(在新視窗中開啟)
  • 分享到 Twitter(在新視窗中開啟)
  • 分享到 LinkedIn(在新視窗中開啟)
  • 分享到 Pinterest(在新視窗中開啟)
  • 分享到 Pocket(在新視窗中開啟)

相關文章

本站聲明:網站內容來源免費資源網路社群https://free.com.tw,如有侵權,請聯繫我們,我們將及時處理

【精選推薦文章】

自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

【精選推薦文章】

如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

想要讓你的商品在網路上成為最夯、最多人討論的話題?

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!

Clef 讓你登入 WordPress 網站免輸入帳號密碼,全新兩步驟驗證自動登入超安全!

本文章介紹的 Clef 外掛程式僅適用於以 WordPress 自架網站的使用者,若你是使用 WordPress.com 提供的免費網誌服務則無法安裝。

之前我曾經利用一些篇幅來針對 WordPress 架設的網站安全提供建議,例如 9 個提升 WordPress 網站安全性的方法、或者是安裝 WordPress 後你應該要做的 25 件事,如果你也是使用 WordPress 架站的話,請一定要對這些細節特別用心,因為任何一點微小的疏失,都可能成為未來被有心人士入侵或破壞的漏洞。

若你對於網站安全特別重視,一定不難發現,上面的兩篇文章裡提到許多關於帳號密碼和登入的細節。就 Pseric 的經驗來說,設定一組難以被猜測出來的帳號密碼,搭配上 Google Authenticator 之類的兩步驟驗證外掛,在帳號密碼以外多一道防護其實就能大幅提昇安全性。

最近我又發現一款全新的安全防護工具 Clef,簡單來說,它是帳號密碼、兩步驟驗證以外的另一種選擇,使用者無須輸入難以記憶的密碼組合,也不用等待手機來產生兩步驟驗證隨機代碼,利用手機上的 Clef 應用程式對著登入畫面的條碼一掃,直接驗證身份登入。

Clef 將安全驗證的複雜過程交給使用者最貼身的配備,也就是手機或行動裝置,讓驗證變得更快、更簡單。目前已經支援 iOS、Android 兩大平台。

Clef Two-Factor Authentication 雖然名稱上是兩步驟驗證,但它其實跟我們熟悉產生驗證碼方式有些微不同,Clef 會在畫面產生類似於條碼的波浪狀驗證碼(Wave),利用身份驗證後的 Clef 手機應用程式,以鏡頭對著電腦上的驗證碼一掃,就能夠確認你的身份並完成登入的程序。

外掛名稱:Clef Two-Factor Authentication
外掛鏈結:https://wordpress.org/plugins/wpclef/

使用教學

STEP 1

使用 Clef 完全不需要用到帳號密碼,減少密碼在傳輸過程中被擷取而造成安全問題的可能性。不僅如此,Clef 還能將 WordPress 原有的帳號密碼登入驗證方式停用,以 Clef 取代傳統登入表單(新的登入畫面會如同下圖)。

STEP 2

要安裝這個功能非常簡單。首先,你要有一支 iPhone 或 Android 手機、平板電腦,因為每次登入都會用到,請先在手機或平板電腦上安裝 Clef 應用程式(可以在 Clef 官方網站找到下載鏈結),安裝後先放著,我們要先進行 WordPress 端的設定。

開啟、登入你的 WordPress 網站後,點選左側選單的「外掛」->「安裝外掛」,然後搜尋「Clef」即可找到這個外掛功能,點選右上角的「立刻安裝」把它安裝到網站。

STEP 3

下載、啟用外掛功能後,第一次使用需要進行設定。點選外掛的「Get Started」開始進行初次使用設定。

STEP 4

如果你還沒有下載 Clef App 的話,在開始前也會提示使用者先下載,把 Clef 安裝到自己的手機才能繼續。若已安裝完成,點選「I already have the app」繼續下一步。

接著畫面上會出現 Clef Wave,也就是波浪狀的驗證碼,拿出你的手機或平板電腦,打開剛才下載的 Clef 應用程式,對著螢幕上的驗證碼掃描。完成這步驟後,就能讓你的網站與手機 Clef 進行連結。

STEP 5

接下來會跳轉到一個隨機的 clef.io 鏈結,看到箭頭了嗎?請依照指示,選擇在畫面上出現的網址(在你的手機上進行選擇),這個步驟是 Clef 後來再加入的額外驗證,目的是避免不小心被其他人掃描、登入,多一層驗證的防護措施。

STEP 6

在結束 Clef 外掛設定前,可以選擇是否邀請其他使用者來使用 Clef,可以點選藍色按鈕來發送邀請,或者點選「Continue and finish setup」完成設定。

STEP 7

順帶一提,如果你想用 Clef 驗證方式來取代 WordPress 傳統帳號密碼登入框,可以在外掛設定的「Disable Passwords」將相關功能關閉。若你使用 WordPress App 或離線編輯器,必須要透過 API 驗證身份,也記得把 Allow passwords for API 功能打開才能正常連線。

值得一試的三個理由:

  1. 以全新的驗證波浪(Clef Wave)取代原有的帳號密碼登入
  2. 支援 iOS、Android,掃描即可快速驗證身份
  3. 可設定自動登出時間,或從遠端登出帳號
  • 按一下以分享至 Facebook(在新視窗中開啟)
  • 分享到 Twitter(在新視窗中開啟)
  • 分享到 LinkedIn(在新視窗中開啟)
  • 分享到 Pinterest(在新視窗中開啟)
  • 分享到 Pocket(在新視窗中開啟)

相關文章

本站聲明:網站內容來源免費資源網路社群https://free.com.tw,如有侵權,請聯繫我們,我們將及時處理

【精選推薦文章】

如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

想要讓你的商品在網路上成為最夯、最多人討論的話題?

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!

TinyPNG 也有 WordPress 圖片壓縮外掛,上傳後自動最佳化(Compress JPEG & PNG images)

本文章介紹的 Compress JPEG & PNG images 外掛程式僅適用於 WordPress 自架網站的使用者,若你是使用 WordPress.com 免費網誌服務則無法安裝。

TinyPNG 是我個人相當喜愛的圖片壓縮工具,後來推出 TinyJPG 後,使它原先支援的格式除了 PNG 外又多了一項 JPG,對於大部分使用者來說已經相當夠用,可惜先前它並沒有針對 WordPress 推出外掛功能,要壓縮圖片都必須手動上傳,然後再把壓縮好的圖片下載插入文章裡,雖然這麼做不會花太多時間,但如果能夠跟 WordPress 整合那就更方便了!

一直以來,WordPress 都沒有很好用的圖片壓縮外掛,也就只能勉強使用 WP Smush 這款很老牌的外掛工具,但它的壓縮效果、速度並不是很理想。

今年二月 TinyPNG 終於推出了官方版的 WordPress 外掛,現在使用者可以免費下載、將 TinyPNG 安裝到自己的網站,利用它自動壓縮、最佳化上傳的圖片特性,大幅減少圖片佔用的空間,同時也能提升網站圖片載入速度,尤其在 Google 將網站開啟速度列為搜尋排名的參考因素後,壓縮圖片對於搜尋引擎最佳化(SEO)來說有正面的影響。

這款名為 Compress JPEG & PNG images 的圖片壓縮外掛來自 TinyPNG,利用 API 串連的功能,讓你的 WordPress 媒體庫可以直接使用 TinyPNG 技術來壓縮圖片,免費方案每個月可以免費壓縮 500 張圖片,超過才會開始計價收費,對一般網站來說,每月 500 張的配額其實已經相當夠用。

外掛名稱:Compress JPEG & PNG images
外掛鏈結:https://wordpress.org/plugins/tiny-compress-images/

使用教學

STEP 1

開啟你的 WordPress 控制台,點選左側選單的「外掛」->「安裝外掛」,在右上角的搜尋框輸入「tinypng」,可以找到本文介紹的「Compress JPEG & PNG images」外掛,點選右上角的「立刻安裝」就能從 WordPress 官方資料庫下載、安裝這個外掛功能。

STEP 2

安裝後,點選「啟用外掛」來開啟這項功能。

STEP 3

接著從「設定」裡找到「媒體」功能,將頁面往下拉,會有一個 TinyPNG API Key 欄位需要設定,第一次使用請先點選下方的 TinyPNG Developer section 來申請 API 金鑰。

此外,預設情況下,TinyPNG 會針對原圖、縮圖、中型尺寸、大型尺寸等圖片格式進行最佳化處理,若你沒有用到其他格式的圖片,建議可以只勾選「Original」原始尺寸即可。

STEP 4

開啟 TinyPNG Developer API 頁面,在上方藍色欄位填入你的姓名、Email,點選右邊的 Get your API key 按鈕後,就能立即收到一封 TinyPNG 郵件,點選信中的鏈結開啟,即可找到你的 API 金鑰。

回到上一個畫面,把 API key 貼上,儲存後就能啟用 WordPress 外掛內的圖片壓縮功能。

STEP 5

在安裝完 Compress JPEG & PNG images 後,每次上傳圖片至媒體庫時,就會透過 TinyPNG 全自動進行壓縮,你再也不用手動開啟 TinyPNG 網站然後上傳、壓縮圖片。

如果你網站之前已經有許多圖片,可以透過「工具」->「Compress All Images」功能來批次自動壓縮、最佳化網站內的所有圖片,不過要注意如果超過五百張圖片,必須回 TinyPNG 網站輸入你的信用卡資料,才能夠繼續壓縮,因為每月的免費額度為 500 張。

STEP 6

點選 Compress All Images 後,就會對網站媒體庫內的圖片進行自動壓縮、上傳,不過記得要把網站分頁開著,若是跳出頁面,壓縮工具就會暫停。

若你有大量需求,TinyPNG 在超過 500 張圖片後才會開始計費,每張圖片 $0.009 美元,若單月超過一萬張圖片,價格會壓低至 $0.002 美元,若拿來交換速度、頻寬跟 CDN 開銷那其實是很划算的投資,如有需要的話不妨參考一下。

值得一試的三個理由:

  1. 利用 TinyPNG 技術壓縮、最佳化網站圖片
  2. 搭配 WordPress 外掛可以自動對圖片進行壓縮處理
  3. 內建批次壓縮工具,可一鍵處理媒體庫內的所有圖片
  • 按一下以分享至 Facebook(在新視窗中開啟)
  • 分享到 Twitter(在新視窗中開啟)
  • 分享到 LinkedIn(在新視窗中開啟)
  • 分享到 Pinterest(在新視窗中開啟)
  • 分享到 Pocket(在新視窗中開啟)

相關文章

本站聲明:網站內容來源免費資源網路社群https://free.com.tw,如有侵權,請聯繫我們,我們將及時處理

【精選推薦文章】

如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

想要讓你的商品在網路上成為最夯、最多人討論的話題?

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!

啟用 Jetpack「單一登入」機制教學,讓你的 WordPress 網站更安全(含兩步驟驗證)

好像有一段時間沒有寫關於 WordPress 架站的相關文章,事實上,最近找到一個能夠有效提升 WordPress 安全性的方法,簡單來說,啟用內建於 Jetpack 外掛的「單一登入」模組,也就是 Single Sign On(SSO)功能,然後把原本帳號密碼驗證方式關閉停用,將驗證導回讓 WordPress.com 處理。

這麼做有那些好處呢?除了可為帳號加上兩階段驗證保護,從應用程式或手機來接受驗證碼,提高帳號安全性以外,更大的優點是自己的網站無須負載被暴力攻擊、破解的資源耗費問題,因為驗證會被導向 WordPress.com,這個由 Automattic 營運的平台將提供更好的安全性防護。

使用 WordPress 架站的話一定知道:WordPress 登入畫面預設是對外開放的,這也表示任何人都可以存取你的登入頁面,甚至可能從其他地方取得密碼並登入網站。為了更好的安全性,建議要妥善保護好登入頁面(延伸閱讀:安裝 WordPress 後你應該做的 25 件事、9 個提升 WordPress 網站安全性的方法)。

不過,現在不用這麼麻煩了!因為 Jetpack 的 Single Sign On(SSO)把登入驗證的任務交給 WordPress.com 為你把關,拋棄那些第三方登入、兩階段驗證的相關外掛吧!照著接下來的教學,我會教你如何快速有效提升網站的登入頁面安全性。

使用「單一登入」功能保護你的 WordPress

WordPress 的「單一登入(SSO)」功能提供了一個更安全的驗證方法,以保護你的網站免於受到暴力破解攻擊。一旦啟用,你原有的 WordPress 登入畫面會被關閉,你必須登入 WordPress.com 帳號才能進入自己的 WordPress 網站控制台。

Digital Inspiration 在這篇文章提到開啟「單一登入」有這些好處:

  1. 由於 WordPress.com 已經支援兩階段驗證,現在啟用後將能為你的網站提供相同等級的安全防護機制,而且不需要安裝額外的外掛功能。
  2. 你網站所有登入請求,包括惡意登入嘗試,現在都會被導向 WordPress.com,進而減少伺服器和資料庫的負載
  3. 如果你管理多個網站,你可以使用單一 WordPress.com 帳戶來登入、管理,無須記住多組不同的帳號密碼組合。

如何使用 Jetpack 實現「單一登入」?

STEP 1

如果你從來沒用過 Jetpack 外掛,那麼你可能也沒有 WordPress.com 帳戶,可以先開啟這個鏈結,填入 Email、使用者名稱、密碼等相關資訊來建立一個 WP.com 帳號。在註冊時你可能會被要求建立一個 WordPress 網誌,但這不會影響接下來的操作。

STEP 2

申請好 WordPress.com 帳號後,開啟這個鏈結,為你的帳號設定「兩步驟驗證」,增添額外的安全防護。設定前要先填入自己的手機號碼,下載兩階段驗證專用的手機應用程式,跟著網頁步驟操作即可完成設定。

延伸閱讀:

  • 8 個線上服務「兩步驟驗證」設定說明,確保帳戶免於威脅

一旦啟用你的 WordPress.com 兩步驟驗證後,未來當你登入帳號時不僅要輸入正確的使用者名稱、密碼,同時也要輸入一組由行動裝置產生的驗證碼。

STEP 3

回到你的 WordPress 網站,從「外掛 | 安裝外掛」頁面找到 Jetpack,點選「立刻安裝」來自動下載、安裝到你的網站。

第一次使用 Jetpack 時會要求連接到你的 WordPress.com 帳戶,按下連接、登入帳號後,點選「Approve」藍色按鈕即可把網站與你的帳號連結。

STEP 4

設定好 Jetpack 後,即可開啟相關模組功能(在 Jetpack 3.8 版時出現一個問題,那就是介面會變成英文版,不過不影響使用)。

找到我們需要的「單一登入(英文為 Single Sign On)」,然後將它啟用。

STEP 5

以 FTP、SFTP 或 SSH 連接到你的 WordPress 伺服器,開啟當前使用的佈景主題資料夾(路徑為 wp-content/themes/theme-name),編輯 functions.php 檔。複製以下程式碼,貼到檔案後儲存:

add_filter( 'jetpack_sso_bypass_login_forward_wpcom', '__return_true' );

這個步驟主要用於「停用 WordPress 內建的登入頁面」,改由重新導向至 WordPress.com 進行登入及驗證身份。如果你的網誌是屬於多人協作,或者你希望保留原有的登入畫面,可跳過此步驟。

STEP 6

前往「帳號 | 個人資訊」頁面,可以在最底部找到「Log in with WordPress.com」按鈕,這是用來把你的網站登入帳號連結 WordPress.com 帳號。登入後,你就能看到如下畫面,表示已成功連結(Connected)至這個帳號,同時也啟用了兩步驟驗證。

STEP 7

最後,當你登出、重新登入 WordPress 時,就不會出現原有的登入頁面,而是被引導至 WordPress.com 網站,你必須在這裡登入已連結的 WordPress.com 帳號,通過驗證後就可以進入你的控制台囉!

若你在設定途中發現任何問題,導致無法正確登入網站的話,可以把步驟五的程式碼從檔案裡移除,然後將 Jetpack 外掛資料夾整個刪除,就能暫時關閉、停用「單一登入」。

另外,Jetpack 裡也提供了幾個非常實用的模組,建議開啟:

  • Photon 免費 CDN 圖片分流、加速服務,每個 WordPress 用戶都該開啟的外掛
  • Jetpack Monitor 免費 24/7 網站監測服務,WordPress 無法連線自動發送提醒
  • 按一下以分享至 Facebook(在新視窗中開啟)
  • 分享到 Twitter(在新視窗中開啟)
  • 分享到 LinkedIn(在新視窗中開啟)
  • 分享到 Pinterest(在新視窗中開啟)
  • 分享到 Pocket(在新視窗中開啟)

相關文章

本站聲明:網站內容來源免費資源網路社群https://free.com.tw,如有侵權,請聯繫我們,我們將及時處理

【精選推薦文章】

如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

想要讓你的商品在網路上成為最夯、最多人討論的話題?

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!

SpringCloud微服務架構升級總結

一、背景

1.1 應用系統的架構歷史

1.2 什麼是微服務?

起源:微服務的概念源於 2014 年 3 月 Martin Fowler 所寫的一篇文章“Microservices”。文中內容提到:微服務架構是一種架構模式,它提倡將單一應用程序劃分成一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。

通信方式:每個服務運行在其獨立的進程中,服務與服務間採用輕量級的通信機制互相溝通(通常是基於 HTTP 的 RESTful API)。

微服務的常規定義:微服務是一種架構風格,一個大型複雜軟件應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關注於完成一件任務。

把原來的一個完整的進程服務,拆分成兩個或兩個以上的進程服務,且互相之間存在調用關係,與原先單一的進程服務相比,就是“微服務”。(微服務是一個比較級的概念,而不是單一的概念)

1.3 微服務架構的優勢

  • 可擴展性:在增加業務功能時,單一應用架構需要在原先架構的代碼基礎上做比較大的調整,而微服務架構只需要增加新的微服務節點,並調整與之有關聯的微服務節點即可。在增加業務響應能力時,單一架構需要進行整體擴容,而微服務架構僅需要擴容響應能力不足的微服務節點。
  • 容錯性:在系統發生故障時,單一應用架構需要進行整個系統的修復,涉及到代碼的變更和應用的啟停,而微服務架構僅僅需要針對有問題的服務進行代碼的變更和服務的啟停。其他服務可通過重試、熔斷等機制實現應用層面的容錯。
  • 技術選型靈活:微服務架構下,每個微服務節點可以根據完成需求功能的不同,自由選擇最適合的技術棧,即使對單一的微服務節點進行重構,成本也非常低。
  • 開發運維效率更高:每個微服務節點都是一個單一進程,都專註於單一功能,並通過定義良好的接口清晰表述服務邊界。由於體積小、複雜度低,每個微服務可由一個小規模團隊或者個人完全掌控,易於保持高可維護性和開發效率。

Spring Cloud作為目前最流行的微服務開發框架,不是採用了Spring Cloud框架就實現了微服務架構,具備了微服務架構的優勢。正確的理解是使用Spring Cloud框架開發微服務架構的系統,使系統具備微服務架構的優勢(Spring Cloud就像工具,還需要“做”的過程)。

1.4 什麼是Spring Boot?什麼是Spring Cloud?

Spring Boot框架是由Pivotal團隊提供的全新框架,其設計目的是用來簡化基於Spring應用的初始搭建以及開發過程。SpringBoot框架使用了特定的方式來進行應用系統的配置,從而使開發人員不再需要耗費大量精力去定義模板化的配置文件。

Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中的配置管理、服務註冊,服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分佈式會話和集群狀態管理等操作提供了一種簡單的開發方式。

1.5 微服務、Spring Boot、Spring Cloud三者之間的關係

  • 思想:微服務是一種架構的理念,提出了微服務的設計原則,從理論為具體的技術落地提供了指導思想。
  • 腳手架:Spring Boot是一套快速配置腳手架,可以基於Spring Boot快速開發單個微服務。
  • 多個組件的集合:Spring Cloud是一個基於Spring Boot實現的服務治理工具包;Spring Boot專註於快速、方便集成的單個微服務個體;Spring Cloud關注全局的服務治理框架。

二、技術解析

2.1 Everything is jar, Everything is http

Spring Boot通過@SpringBootApplication註解標識為Spring Boot應用程序。所有的應用都通過jar包方式編譯,部署和運行。

@SpringBootApplication 
public class Application {     
    private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);     
    public static void main(String[] args) {         
        SpringApplication.run(Application.class, args);         
        LOGGER.info(”啟動成功!");     
    } 
}

 

每個Spring Boot的應用都可以通過內嵌web容器的方式提供http服務,僅僅需要在pom文件中依賴spring-boot-start-web即可,原則上微服務架構希望每個獨立節點都提供http服務。

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

 

2.2 Spring boot Task 任務啟動和定時任務

在Spring Boot需要啟動任務時,只要繼承CommandLineRunner接口實現其run方法即可。

@SpringBootApplication 
public class ClientDataListener implements CommandLineRunner
    public void run(String... strings) throws Exception {     
        clientInfoListenerHandler(); 
    }
}

 

在Spring Boot需要執行定時任務時,只需要在定時任務方法上增加@Scheduled(cron = “0 15 0 * * ?”)註解(支持標準cron表達式),並且在服務啟動類上增加@EnableScheduling的註解即可。

@SpringBootApplication
@EnableScheduling
public class Application {     
    private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);     
    public static void main(String[] args) {         
        SpringApplication.run(Application.class, args);         
        LOGGER.info(”啟動成功!");     
    } 
}

 

// some class
@Scheduled(cron = "0 15 0 * * ?")
public void someTimeTask() {
    ***
}

 

2.3 Spring boot Actuator 監控

Actuator是spring boot提供的對應用系統自身進行監控的組件,在引入spring-boot-start-web基礎上引入spring-boot-starter-actuator即可。

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

 

2.4 Spring cloud Config 配置中心

在我們實現微服務架構時,每個微服務節點都需要自身的相關配置數據項,當節點眾多,維護就變得非常困難,因此需要建立一个中心配置服務。

Spring Cloud Config分為兩部分。Spring Cloud Config server作為一個服務進程,Spring Cloud Config File為配置文件存放位置。

2.5 Spring cloud Eureka 服務註冊中心

服務註冊的概念早在微服務架構之前就出現了,微服務架構更是把原先的單一應用節點拆分成非常多的微服務節點。互相之間的調用關係會非常複雜,Spring Cloud Eureka作為註冊中心,所有的微服務都可以將自身註冊到Spring Cloud Eureka進行統一的管理和訪問(Eureka和Zookeeper不同,在AOP原則中選擇了OP,更強調服務的有效性)

2.6 Spring cloud Zuul 服務端智能路由

當我們把所有的服務都註冊到Eureka(服務註冊中心)以後,就涉及到如何調用的問題。Spring Cloud Zuul是Spring Cloud提供的服務端代理組件,可以看做是網關,Zuul通過Eureka獲取到可用的服務,通過映射配置,客戶端通過訪問Zuul來訪問實際需要需要訪問的服務。所有的服務通過spring.application.name做標識,

不同IP地址,相同spring.application.name就是一個服務集群。當我們增加一個相同spring.application.name的節點,Zuul通過和Eureka通信獲取新增節點的信息實現智能路由,增加該類型服務的響應能力。

2.7 Spring cloud Ribbon 客戶端智能路由

與Spring Cloud Zuul的服務端代理相對應,Spring Cloud Ribbon提供了客戶端代理。在服務端代理中,客戶端並不需要知道最終是哪個微服務節點為之提供服務,而客戶端代理獲取實質提供服務的節點,並選擇一個進行服務調用。Ribbon和Zuul相似,也是通過和Eureka(服務註冊中心)進行通信來實現客戶端智能路由。

2.8 Spring cloud Sleuth 分佈式追蹤

2.9 Spring cloud Zipkin 調用鏈

2.10 Spring cloud Feign http客戶端

Spring Cloud Feign是一種聲明式、模板化的http客戶端。 使用Spring Cloud Feign請求遠程服務時能夠像調用本地方法一樣,讓開發者感覺不到這是遠程方法(Feign集成了Ribbon做負載均衡)。

把遠程服務和本地服務做映射

@FeignClient(name = "rabbitmq-http", url = "${SKYTRAIN_RABBITMQ_HTTP}") 
public interface TaskService {     
    @RequestMapping(value = "/api/queues", method = RequestMethod.GET)     
    public String query(@RequestHeader("Authorization") String token); 
}

 

以調用本地服務的方式調用遠程服務

@Autowired 
private TaskService taskService; 
private String queryRabbitmqStringInfo() {     
    byte[] credentials = Base64 .encodeBase64((rabbitmqHttpUserName + ":" + rabbitmqHttpPassword).getBytes(StandardCharsets.UTF_8));     
    String token = "Basic " + new String(credentials, StandardCharsets.UTF_8);     
    return taskService.query(token); 
}

 

2.11 Spring cloud Hystrix 斷路器

三、微服務實踐

3.1 我們開發的幾個微服務組件—應用管理中心

應用管理中心可以對每個已經註冊的微服務節點進行停止,編譯,打包,部署,啟動的完整的上線操作。

3.2 我們開發的幾個微服務組件—zookeeper數據查詢中心

zookeeper數據查詢中心根據zookeeper地址,端口,命令獲取zookeeper數據信息。

3.3 我們開發的幾個微服務組件—微服務健康檢測中心

健康檢測中心周期性檢查每個微服務的狀態,當發現有微服務狀態處於DOWN或連接超時時,觸發報警。

3.4 我們開發的幾個微服務組件—定時任務查詢中心

// 在BeanPostProcessor子類中攔截
@Component
public class SkytrainBeanPostProcessor implements BeanPostProcessor, Ordered {
    ***
    /**
     * Bean 實例化之後進行的處理
     */
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        beanPostProcessor.postProcessAfter(bean, beanName);
        return bean;
    }
    ***
}
// 攔截后獲取定時任務註解
***
public Object postProcessAfter(Object bean, String beanName) {
    Class targetClass = AopUtils.getTargetClass(bean);
    Map annotatedMethods = MethodIntrospector.selectMethods(targetClass,
            new MethodIntrospector.MetadataLookup() {
 
                public Set inspect(Method method) {
 
                    Set scheduledMethods = AnnotatedElementUtils.getMergedRepeatableAnnotations(method,
                            Scheduled.class, Schedules.class);
                    return (!scheduledMethods.isEmpty() ? scheduledMethods : null);
                }
            });
    if (!annotatedMethods.isEmpty()) {
        String className = targetClass.getName();
        for (Map.Entry entry : annotatedMethods.entrySet()) {
            Method method = entry.getKey();
            for (Scheduled scheduled : entry.getValue()) {
                String key = className + ":" + method.getName();
                String value = scheduled.toString();
                taskInfos.put(key, value);
            }
        }
    }
    return null;
}
***
 
// 獲取定時任務后註冊
***
public void taskRegister() {
    String nodeInfo = ipAddress + ":" + serverPort + ":";
    try {
        /**
         * 定時任務
         */
        Map infos = taskInfos;
        for (Entry item : infos.entrySet()) {
            String taskId = nodeInfo + item.getKey();
            String taskParameter = item.getValue();
            JSONObject info = new JSONObject();
            info.put("taskId", taskId);
            info.put("taskParameter", taskParameter);
            info.put("applicationName", applicationName);
            info.put("taskType", "schedule");
            LOGGER.info(info.toString());
            zooKeeperExecutor.createZKNode(SKYTRAIN_TASK_ZKNODE_PREFIX + taskId, info.toString());
        }
    }
    catch (Exception ex) {
        LOGGER.error("", ex);
    }
}
***

 

3.5 微服務的分類

  • 微服務平台組件
  • 公共服務組件
  • 基礎服務組件/業務服務組件

3.6 整體微服務架構圖

作者:梁鑫

來源:宜信技術學院

【精選推薦文章】

如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

想要讓你的商品在網路上成為最夯、最多人討論的話題?

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!