使用子網域儲存 WordPress Media 媒體庫

Subdomain WordPress Media Library

使用子網域來儲存 WordPress 媒體庫圖片 (Media Library),在 HTTPS 時代之前,是為了增加網頁加載的速度;現在這麼做,是為了方便管理媒體庫圖片,更重要的是可以縮短備份的時間,減低主機 CPU 負載。

之前我有寫過類是的文章,事隔已久,外掛已更新到更好用,已經不需要再到 MySQL 更改圖片的上傳路徑,外掛啟動後,將子網域路徑輸入就完成了,連同之前上傳的圖片,一併幫你更改好。

早先寫的 WordPress 媒體庫文章

如何使用子網域儲存圖片來增加網頁加載的速度? 開啟一個網頁所需的加載時間不僅僅是由您的主機服務器和網絡速度來決定,還有一部分是由你所使用的瀏覽器來決定。

本次的說明,只可以在同一個主機進行,不同的主機使用子網域儲存 WordPress Media,又是不同的方法,不在本次的說明。

Advertisement

備份網站和數據庫

在改變 WordPress 媒體庫路徑之前,請先備份網站,若有執行出錯時,還可以還原網站;可利用 UpdraftPlus Plugin 先做一次備份,或先導出資料庫。

創建一個子網域

虛擬主機可以利用 cPanel 來創建,或使用 DNS 管理來創建一個子網域。例如:imgur.yungke.me,A 紀錄指向同一個主機 IP。

注意:最好子網域也安裝 HTTPS 加密證書,避免主網域造成混合內容。

DNS Subdomain Images

WordPress 中更改變圖片上傳的位置

WordPress 3.5 版本之後,默認媒體存儲位置的設置已被刪除,為了方便我們更改圖片上傳到子網域的路徑,需要安裝一個輕量 WP Original Media Path 外掛,來恢復此項功能。

WP Original Media Path 外掛

Change the location for the uploads folder for WordPress

啟用後,輸入以下詳細配置,如圖:

WP Original Media 配置

上傳的檔案將儲存於此目錄:完整的 URL 文件路徑,/data/wwwroot/imgur.yungke.me/images (這是您的子域名路徑,請更改域名為您的子域名)

完整的檔案網址:請填入子域名的網址,如 https://imgur.yungke.me/images (請更改域名為您的子域名)

儲存配置,步驟到這邊就可以實現圖片與主網站分開存放,往後您在媒體庫上傳圖片時,圖片真實存放在子網域的 images 文件夾內。

移動 uploads 資料夾

將現在運行中的網站圖片移動到新的 (子網域) 圖片文件夾 images 內,利用 FileZilla 的 FTP 軟體,將 /wp-content/uploads/ 中的所有文件移動到子網域 /images 內,移動過程中請保持目錄結構。

步驟到此,就已經完成使用子網域儲存 WordPress Media 媒體庫,不管是已經使用很久的網站,或剛新建的網站,整個 WordPress 圖片路徑都已經更換成子網域了,不需要再動到數據庫打入代碼,更換圖片路徑。

網站的備份

已經將很肥大的 uploads 資料夾搬移走後,在做網站備份時,就不須再備份 uploads,以 UpdraftPlus 外掛為例:

UpdraftPlus 外掛

UpdraftPlus is the World's leading backup, restore and migration WordPress plugin. Used by over a million WordPress sites, you can backup with confidence.

在設置頁面將「備份 uploads」的勾勾取消,如圖:

UpdraftPlus 外掛配置

保存配置後,下次 UpdraftPlus 執行網站備份時,就不會備份 uploads 資料夾。

如果是 VPS 主機,可以單獨備份子網域 uploads 資料夾到另一台備份主機裡,可使用 rsync 指令:

rsync -avu --progress --delete /data/wwwroot/imgur.yungke.me/ root@107.172.xx.xxx:/data/wwwroot/imgur.yungke.me/

備份主機 SSH 端口如果有變更,指另如下:

rsync -avu -e "ssh -p 12345" --progress --delete /data/wwwroot/imgur.yungke.me/ root@107.172.xx.xxx:/data/wwwroot/imgur.yungke.me/

其他問題

+ 為何要用子網域儲存 WordPress Media 媒體庫?
A:教學網站或旅遊、美食這一類的部落格網站,時間久了,WordPress 媒體庫圖片會越來越多,達到 10G ~ 20G 容量都有可能,把圖片分離出來,網站備份時可以大幅降低主機負載,以後遷移主機,也會好處理。

+ 精選圖片可以顯示嗎?
A:精選圖片一樣可以顯示,在 Flatsome 和 CSSIgniter 主題佈景測試過,不會有問題,可以參考我的 DEMO 網站。

+ 圖片有需要做 301 重定向 (redirect)?
A:我處理過兩個上萬張圖片的網站,並沒有做 301 重定向 (redirect),半年後觀察網站搜尋,排名並沒有影響,使用圖片搜尋方式,也沒有影響;我不是 SEO 專家,如果您對這一方面有疑慮,可以詢問 SEO 這一方面的專家。

WordPress Media 媒體庫教學系列文章:

1. WP Offload S3 Lite 外掛來儲存 WordPress 媒體庫

WP Offload S3 Lite 外掛可以自動將 WordPress 媒體庫圖片、視頻、文檔通過 WordPress 上傳置 Amazon S3 Bucket 中。然後,它會自動將每個媒體文件的 URL 替換為各自的 Amazon S3 URL,或者如果您已經配置了 Amazon CloudFront,則會顯示相應的 CloudFront URL。

2. WordPress + Chevereto 圖床軟體來管理媒體庫

Chevereto 是一款採用 PHP 語言開發的網路相冊程式,支援線上圖片下載及分享服務系統,又支援多語言,控制台可以直接設置中文語言,也支援本地電腦上傳和行動裝置圖像上傳方式,並集合多種功能。

3. 如何優化 WordPress 媒體庫圖片

這是一個老生常談的問題,在 FB 社群中常被提出討論,PageSpeed Insights 分數很低,該如何優化網站的圖片,大家會介紹各式好用的壓縮軟體外掛及方法 (photoshop);WordPress 媒體庫圖片的壓縮優化的法則大家都知道,不過,好像都忽略了一個重要的方向。就是,你的網站需要多大的圖片尺寸 (Pixels) 才夠用。

2019/07/25 補充:

有讀者跟我反應,依照上述的教學,媒體庫的圖片無法顯示?

這個外掛有個限制,主網域和子網域要在同一台主機裡才行

另外,Store uploads in this folder 的設置路徑是你的子網域的完整路徑。

有的共享主機會有防止跨站攻擊的安全防護,請向託管商查明,如有這個保護,就無法使用子網域儲存圖片的方法

我重新建置一個 DEMO 網站,可以參考,有任何問題歡迎一起研究:

Featured Photo by david henrichs on Unsplash

Follow me

yungke

視咖啡如命的癮君子,沒有厲害的技術,只會小打小鬧的電腦工程師,其實是個打雜小弟,修電燈、水管也都是我的工作。
yungke
Follow me
Advertisement

Follow Me

查看本文
喜愛 Like 點擊數!!

Comments

  1. Aubrey says:

    版主你好,我是使用easy engine搭建VPS環境後 以上述的方法進行設定
    圖片能從主網域媒體庫成功傳送到子網域,但是在主網域寫文章時候,媒體庫的圖片都顯示不出來,也無法成功插入顯示…

    • yungke says:

      檢查一下子網域的目錄權限..
      或用下面的指令 (Subdomain 更改為你的子網域)

      chown -R www-data:www-data /var/www/Subdomain.com/htdocs

    • yungke says:

      在 Store uploads in this folder 的路徑最前面請加上 / 號,就會正常上傳顯示了。
      如果還是不行,請檢查是否有防止跨站寫入的安全防護。

Back to top