Lưu trữ hình ảnh trên subdomain trong WordPress.

Nếu để ý, chắc bạn sẽ thấy tất cả link hình ảnh trên blog WP Căn bản đều có dạng static.wpcanban.com phải không nào? Nhiều độc giả thắc mắc liệu có phải chúng tôi đang sử dụng CDN hay không? Câu trả lời là không nhé. Thực ra, tôi đã chuyển thư mục uploads WordPress lên lưu trữ trên subdomain. Do đó, link của các tập tin được upload (trong đó có cả link hình ảnh) sẽ có dạng subdomain thay vì domain chính. Tác dụng của thủ thuật này là giảm số lượng request trực tiếp đến domain chính, cân bằng tải, làm tăng tốc độ load dữ liệu. Nếu bạn cũng đang muốn làm điều tương tự thì ngay sau đây là hướng dẫn chi tiết.
Tham khảo thêm:
Hướng dẫn lưu trữ hình ảnh trên subdomain
1. Việc đầu tiên các bạn cần làm chính là backup dữ liệu của blog/ website (cả database lẫn mã nguồn). Điều này sẽ giúp bạn nhanh chóng khôi phục blog/ website về trạng thái ban đầu trong trường hợp xảy ra sai sót khi thao tác.
2. Tạo một sudomain cho domain chính, chẳng hạn như img.domain.com.

Một thư mục có tên là img sẽ được tự động tạo ra trong thư mục public_html.
3. Trỏ subdomain này về host, sử dụng IP giống với IP của domain chính.

4. Truy cập vào File Manager của cPanel/ DirectAdmin hoặc FTP, copy (hoặc move) toàn bộ nội dung có trong thư mục uploads (nằm trong đường dẫn wp-content/uploads/) sang thư mục img đã được tạo ở bước 2.
5. Truy cập vào phpMyAdmin, lựa chọn đúng database của blog/ website. Click vào nút Query trên menu ngang.

6. Copy và paste đoạn code sau đây vào khung SQL query on database… và click nút Submit Query.
[sql]UPDATE wp_posts SET post_content = REPLACE(post_content,’http://domain.com/wp-content/uploads’,’http://img.domain.com/’)[/sql]
Lưu ý: đổi domain.com thành domain của bạn. Chẳng hạn như:

7. Lặp lại tương tự bước 6, tuy nhiên, lần này, hãy sử dụng code sau đây:
[sql]UPDATE wp_posts SET guid = REPLACE(guid,’http://domain.com/wp-content/uploads’,’http://img.domain.com/’)[/sql]
Nhớ thay domain.com bằng domain của bạn nhé.
8. Quay trở lại giao diện chính của database, click vào mục Search.

9. Nhập từ path vào khung Words or values to search for (wildcard: “%”). Tick chọn table options trong mục Inside tables.

Click vào nút “Go” để bắt đầu quá trình tìm kiếm. Kết quả sẽ có dạng như hình bên dưới. Hãy click vào nút Browser để xem danh sách đầy đủ.

10. Hãy chú ý vào 2 mục upload_path và upload_url_path trong danh sách kết quả. Click vào nút Edit và chỉnh sửa thông số option_value cho phù hợp với blog/ website của bạn. Xem ví dụ trong hình bên dưới.

11. Mở file .htaccess trong thư mục gốc của WordPress ra, thêm đoạn code sau vào trên cùng và lưu lại.
RedirectMatch 301 ^/wp-content/uploads/(.*)$ http://img.domain.com/$1
Lưu ý: thay domain.com bằng domain của bạn.
Thao tác này sẽ giúp redirect những hình ảnh cũ đã được công cụ tìm kiếm index trước đó sang link mới, tránh bị lỗi 404. Cuối cùng, hãy xóa cache trình duyệt và cache blog/ website (nếu bạn có sử dụng plugin tạo cache) và xem kết quả nhé. Chúc các bạn thành công!
Trên đây là các bước chi tiết giúp lưu trữ hình ảnh trên subdomain. Nếu bạn có bất cứ thắc mắc hay khó khăn nào, xin vui lòng gửi vào khung bình luận bên dưới để được hỗ trợ. Bạn biết phương thức khác đơn giản hơn để lưu trữ hình ảnh trên subdomain? Đừng quên chia sẻ nó với chúng tôi.
Nếu bạn thích bài viết này, hãy subscribe blog của tôi để thường xuyên cập nhật những bài viết hay nhất, mới nhất qua email nhé. Cảm ơn rất nhiều. :)





Chào Trung,
subdomain với domain chạy web khác server được không ?
subdomain của domain thứ 2 chứa ảnh cho domain và khác server được không ?
Mình chưa thử. Nhưng mình nghĩ là không được. Bạn cần phải chứa domain và subdomain trên cùng một host. :P
Câu hỏi 1: hỏi hơi ngu một chút ^_^. subdomain và domain trên cùng 1 host thì việc bảo vệ (bảo mật) cho subdomain cần thiết ko ? vì nếu tin tặc tấn công vào subdomain vào vào file chứa domain.
Câu hỏi 2: Mình làm site mới 100%, thì các bước trong bài viết mình thự hiện từ bước nào ?
cám ơn
Tất nhiên là cần thiết rồi bạn. Hacker hoàn toàn có thể chèn mã độc vào site của bạn thông qua subdomain. Site mới hay site cũ thì bạn cũng đều làm tương tự nhau nhé. :P
Sao wpcanban lại chuyển về mạc định thế. có bất cập gì không hiếu
Mình vừa chuyển về mặc định cách đây mấy hôm để triển khai phương án mới. :D
Chào hiếu
Mình đã thực hiện thành công. Nhưng mình lại muốn chuyển về như cũ thì làm thế nào, làm ngược lại với bước trên à
Đúng rồi bạn. Làm ngược lại là được. :P
Hiếu update thêm với trường hợp dùng SSL https đi :p
Cài SSL cho subdomain. Chèn code redirect từ HTTP qua HTTPS vào file .htaccess có trong subdomain (đã có hướng dẫn rồi). Replace toàn bộ link hình ảnh trong database sang dạng HTTPS. Đơn giản vậy thôi. :P
Vd: mình có 2 host. Một host chứa code wp. Host kia chứa mỗi thư mục wp-content. Vậy làm cách nào cho nó hoạt động đc hả bạn :D
Cái này mình chưa thấy ai làm và cũng chưa nghĩ ra cách. :)
Làm theo cách này những hình ảnh thumbnails do force regenerate thumbnails tạo ra có lưu trong folder của Subdomain ko Hiếu ?
Có bạn nhé. Hoàn toàn không bị ảnh hưởng gì cả. :P
Chuyển hình qua sub thành công rồi mà thằng EWWW với force regenerate thumbnails nó ko tìm thấy hình để tạo thumbnails và tối ưu hình
Bạn kiểm tra kỹ lại các bước đi. Mình hướng dẫn hoàn toàn chính xác rồi. Và mình cũng không hề gặp lỗi với 2 plugin kể trên như bạn mô tả. :P
Mình dùng vps với nigxd (k dùng file .htacess) thì sao nhỉ. mình cũng muốn chuyển vì upload của mình lớn lắm
Dùng CDN đi bạn ơi. Nếu ảnh nhiều và nặng thì dùng CDN là giải pháp tốt nhất.
trong bài anh có đề cập CDN, em mới vọc nên không biết, cho em hỏi CDn là gì ạ
Content Delivery Network hay CDN là là một hệ thống nhiều máy tính (máy chủ) chứa những bản sao về nội dung, những máy chủ này được đặt ở nhiều nơi trong một mạng lưới và tối đa hóa băng thông cho việc truy cập dữ liệu. Một người dùng truy cập vào bản sao nội dung được chứa trên máy chủ gần với người dùng nhất sẽ làm giảm tình trạng “thắt cổ chai” so với việc tất cả người dùng cùng truy cập vào một máy chủ trung tâm. :)
Dựa trên bài viết của anh, em nảy ra một ý tưởng thế này!
Cách anh hướng dẫn là dành cho subdomain có cùng IP (cùng host). Nếu em có domain là diepnhaphong.com (host trên Ipage) đã cài WordPress và em muốn chuyển thư mục upload đó sang subdomain media.diepnhaphong.com khác IP (subdomain trỏ sang host trên Digistar hay host nào khác chẳng hạn) thì phải làm sao?
Vì mình đang làm trên localhost nên thật ra là mình chỉ chỉnh lại database cho WordPress nó hiểu “upload_path và upload_url_path” mới. Với trường hợp là subdomain trỏ ở host khác, việc đổi upload_url_path thì được rồi đó nhưng còn upload_path thì phải làm sao đây? Làm sao để khai báo cho WordPress hiểu về username và password tài khoản FTP ở host mà subdomain trỏ đến để nó có thể đọc ghi dữ liệu media ở đây?
Anh có thể xoá hoặc ẩn những comment này. Em mới bắt đầu tập tành WordPress nên có nhiều cái chưa hiểu. Muốn biết thêm về cách xử lý những tình hướng mở rộng thôi, chứ không có ý spam hay đá xoáy làm khó trang của anh.
Em cũng WordPres để viết blog lung tung mấy năm rồi, trang của anh là trang em theo dõi thường xuyên từ lúc bắt đầu có ý nghĩ nghiêm túc với WordPress. Anh là lý do em chọn Ftech cho trang blog WordPress tương lai. Còn nhiều thứ em muốn hỏi lắm nhưng mà thấy để khi nào tiện thì em sẽ hỏi. Cảm ơn vì đã đọc những dòng comment này. :)
Không hiểu tại sao bạn lại nghĩ mình sẽ ẩn hoặc xóa comment đi nhỉ? :) Mình chẳng làm thế bao giờ, trừ khi đó là những comment vi phạm nghiêm trọng nội quy của blog. Còn với những comment mang tính xây dựng và góp ý, mình luôn hoan nghênh. :) Do bạn lần đầu bình luận trên blog của mình nên phải chờ xét duyệt trước khi hiển thị mà thôi. :)
Phong ơi, Mình có chung ý tưởng với bạn đó, nhưng chưa thực hiện được. nếu cậu thấy được comment này liên hệ với mình cùng trao đổi nhé. Sky: nduc86
Vấn đề mà bạn đề cập mình cũng đã từng nghĩ qua nhưng chưa có điều kiện để thử. Bạn thử nghiên cứu xem, nếu được thì chia sẻ nó với mọi người. :)
Vậy sau này mình backup thì thế nào vậy anh?
Anh không backup bằng plugin nên không rõ. Vì host anh dùng có backup bằng R1Soft. Chú thử backup bằng plugin xem nó có backup được không. :P
À ý em hỏi là sau này backup thì lại phải kéo thêm subdomain đi luôn à. Vì muốn nhanh thì 1 nơi lưu code một nơi lưu media á anh :D
Em up ảnh lên bị lỗi http là sao a? khắc phục nó thế nào vậy a?
Bạn lưu trữ ảnh trên subdomain và bị lỗi HTTP khi up ảnh hay là sao? Vui lòng cung cấp ảnh chụp màn hình lỗi và link web của bạn để mình tư vấn cụ thể hơn nhé. :P
Nó bị lỗi như vậy này a: http://prnt.sc/bnubso
Bạn có dùng CloudFlare hoặc plugin tối ưu hình ảnh nào không? :P