Hướng dẫn redirect trang bị lỗi 404 về trang chủ trong WordPress một cách đơn giản.

Trong bài viết lần trước, tôi đã hướng dẫn cho các bạn cách để khắc phục lỗi 404 trong Google Search Console (Webmaster Tools) rồi phải không nào? Tuy nhiên, phương thức này khá thủ công và mất thời gian nên chỉ áp dụng đối với các website có ít lỗi 404. Nếu site của bạn có quá nhiều lỗi 404, phương pháp hiệu quả nhất để giải quyết vấn đề này chính là redirect (chuyển hướng) chúng về trang chủ. Ngay sau đây, tôi sẽ hướng dẫn chi tiết cho các bạn cách để làm điều đó trong WordPress.
Tham khảo thêm:
- Lỗi 404 và Soft 404 khác nhau như thế nào?
- Làm thế nào để khắc phục lỗi 404 trong Google Webmaster Tools
Tại sao bạn nên redirect về trang chủ?
- Đây là nơi thường chứa nhiều liên kết đến các trang con và bài viết nhất. Người dùng có khả năng cao hơn để tìm thấy một bài viết mà họ quan tâm trên trang chủ.
- Trang chủ thường là nơi được bots tìm kiếm truy cập và thu thập dữ liệu nhiều nhất.
Cách redirect trang bị lỗi 404 về trang chủ
Có nhiều cách khác nhau để làm việc này trong WordPress: sử dụng code PHP và sử dụng plugin. Tùy vào khả năng về kỹ thuật của bạn để lựa chọn phương án phù hợp nhất.
Đối với theme Paradise
1. Hãy cập nhật theme Paradise lên phiên bản 6.7.3 hoặc mới hơn.
2. Truy cập Giao diện => Tùy biến => Thiết lập giao diện => Tối ưu tìm kiếm => Chuyển mục Chặn index subpages sang trạng thái Có rồi lưu lại.

Redirect trang bị lỗi 404 bằng code snippets
Chèn đoạn code sau đây vào file functions.php của theme hoặc child theme mà bạn đang sử dụng. Các bạn cũng có thể sử dụng plugin Code Snippets để chèn nhằm tránh nó bị xóa mất khi cập nhật theme.
function wpcb_redirect_404() {
global $wp_query;
if ( $wp_query->is_404 ) {
wp_redirect( get_bloginfo('wpurl'), 301 );
exit;
}
}
add_action('template_redirect', 'wpcb_redirect_404', 1);
Redirect trang bị lỗi 404 bằng file 404.php
Tất cả những gì bạn cần làm là tạo 1 file có tên là 404.php trong thư mục theme (hoặc child theme) mà bạn đang sử dụng với nội dung như sau:
<?php
header("HTTP/2 301 Moved Permanently");
header("Location:".get_bloginfo('url'));
exit();
?>
Nếu theme (hoặc child theme) đã có sẵn file này, hãy xóa hết nội dung bên trong sau đó thay thế nó bằng code bên trên.
Redirect trang bị lỗi 404 bằng plugin
Các bạn có thể lựa chọn sử dụng 1 trong 2 plugin sau:
WP 404 Auto Redirect to Similar Post
Hiện tại, WP Căn bản đang sử dụng plugin WP 404 Auto Redirect to Similar Post (download) để tự động redirect link 404 về trang chủ hoặc các trang tương tự. Plugin này sử dụng thuật toán thông minh để phân tích xem có trang nào khác trên website có URL hoặc tiêu đề gần giống với trang bị lỗi hay không? Nếu có, nó sẽ redirect trang bị lỗi về trang tương tự. Nếu không, nó sẽ redirect về trang chủ (mặc định) hoặc 1 trang cụ thể nào đó do bạn thiết lập từ trước.

WP 404 Auto Redirect to Similar Post có một số thiết lập trong Settings => WP 404 Auto Redirect. Tuy nhiên, với nhu cầu thông thường, các bạn chỉ cần cài đặt và kích hoạt nó là được. Hãy để các thiết lập như mặc định.
All 404 Redirect to Homepage
Nếu bạn chỉ có nhu cầu duy nhất là redirect về trang chủ hoặc 1 trang cụ thể nào đó, hãy làm theo hướng dẫn sau đây:
1. Đầu tiên, các bạn cần phải cài đặt và kích hoạt plugin All 404 Redirect to Homepage (download). Đây là một trong những plugins được đánh giá là tốt nhất để redirect các trang bị lỗi 404 về trang chủ.

2. Truy cập vào Settings => All 404 Redirect to Homepage. Tại đây, tiến hành thiết lập các tùy chọn cho plugin.

Trong đó:
- 404 Redirection Status: Chọn Enabled để kích hoạt, Disabled để vô hiệu hóa plugin.
- Redirect all 404 pages to: Thiết lập trang mà bạn muốn redirect tới khi gặp lỗi 404. Bạn có thể để mặc định là trang chủ hoặc thiết lập một trang bất kỳ.
Sau khi hoàn tất, click vào nút Update Options để lưu lại các thiết lập.
Lưu ý: nếu bạn sử dụng plugin tạo cache, nhớ xóa cache sau khi thiết lập để đảm bảo plugin hoạt động một cách chính xác nhất. Đơn giản vậy thôi. Chúc các bạn thành công!
Bạn có đang redirect trang bị lỗi 404 về trang chủ không? Nếu có, bạn đang áp dụng phương pháp nào để làm điều đó? Hãy chia sẻ với chúng tôi quan điểm và ý kiến của bạn trong khung bình luận bên dưới.
Nếu bạn thích bài viết này, hãy theo dõi 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 nhé. Cảm ơn rất nhiều. :)





Thanks thím, hôm nay giải quyết đc khá nhiều vấn đề khi đọc blog của thím (dù theo dõi khá lâu rồi). Vấn đề trong bài mình thấy cài plugin tốt hơn (ko rõ có nặng web ko?), có thể chuyển hướng đc tất cả các link còn thêm đoạn mã thì một số url như ?limit=75 của mình ko chuyển được.
Plugin này không ảnh hưởng nhiều đến hiệu suất của site đâu bạn nhé. Còn nếu bạn không muốn dùng plugin thì có thể tham khảo các giải pháp khác bên dưới phần bình luận. :P
Sau khi đóng cửa website, có hơn 200 lỗi 404. Đọc bài này của đại ca Hiếu nên áp dụng liền :D
site mình là aspx thì dùng cách gì là hiệu quả ạ.tại mới thiết kế lại giao diện,nên lòi ra rất nhiều những link 404 để như thế ảnh hưởng đến site quá.mình muốn redirect hết về trang chủ.bạn giúp mình chỉ giáo ạ.thanks nhiều
Bạn ra Google tìm kiếm với từ khóa “redirect 404 to homepage asp” là thấy ngay mà. Có rất nhiều cách đấy. :P
Không còn cách nào khác nữa sao? Như thế này thì lại phải thêm plugin lại nặng web ra
Bạn có thể tham khảo cách làm trong bình luận này nhé: https://wpcanban.com/wordpress/thu-thuat-wordpress/redirect-trang-bi-loi-404-ve-trang-chu-trong-wordpress.html#comment-120391
Site mình từ khi chuyển đổi mã nguồn, thế là toàn bộ link cũ thành 404 hết, từ lúc đó google index giảm, visit từ google giảm, từ lúc đó đến nay đã gần 6 tháng mà lượng link 404 google báo vẫn còn đến vài trăm link, giờ ko biết làm sao nữa. chả lẽ lại bỏ site để lập 1 site mới có tên miền khác nhưng lấy nguyên nộ dung từ site cũ sang đc ko nhỉ?
Theo mấy bạn làm vậy có đc ko, site mới liệu có bị google trảm ko ?
Bạn có thể vào Google Webmaster yêu cầu xóa hết index từ trang cũ, thông báo thay đổi domain sau đó yêu cầu index dữ liệu trên domain mới. :-)
Bạn ơi, cứu mình với…hic…mình chưa cài google webmaster cho web cũ, nhưng bây giờ web chuyển hosting&giao diện qua web mới thì các bài viết của web cũ mà google đã cập nhật, tất cả đều thành 404. Bây giờ thì mình mới bắt đầu cài webmaster cho web mới, thì webmaster báo trong đó có đoạn :
3. Confirm successful upload by visiting in your browser
nhưng ” google15b05d00a43bb5b7.html ” cũng là trang 404 luôn, vậy nên mình nghĩ là ko đúng nên mình ko cài webmaster nữa. Vậy thì khi nào mình mới cài webmaster được cho web mới vậy bạn. Nhờ bạn giúp giùm mình. Cảm ơn bạn.
Bạn đã download và upload file xác nhận của Google lên thư mục gốc của hosting chưa? :P
Mình ko biết làm & chưa làm bạn ơi!
Google nó bảo down file nào thì bạn down file đó về và upload lên thư mục gốc của website sau đó xác minh thôi. Có gì khó đâu? :P
Đúng là thứ mình đang cần thx bác
Mình để nguyên trang 404 luôn :D
Bài viết hay. Của mình may là rất ít khi bị lỗi 404. Cơ mà thật sự nên dùng code hay hơn là Plugin chứ Hiếu nhỉ. Càng lắm Plugin càng rối đội hình :lol:
:) Dùng code hay hơn nhưng không phải lúc nào nó cũng hoạt động chính xác. Dùng plugin đơn giản hơn với newbie. :D
Hehe cũng đúng. Nay lại chuyển về Genesis. Dùng mythemshop mà lại không quyến rũ bằng Genesis :D
Genesis quá chất. Nó mang lại cho mình quá nhiều thứ cần thiết nên trước giờ chưa từng nghĩ sẽ bỏ nó. :D
Ừa hồi xưa dùng thời gian rồi chuyển. Giờ lại quay lại. Thôi giờ để nguyên luôn đỡ chuyển đổi vất vả :D
Hiện giờ child theme blog wpcanban đang dùng là genesis gì vậy bạn nhỉ?
Mình dùng child theme Paradise do bên mình tự viết nhé. Nếu bạn muốn sở hữu nó thì có thể tham khảo chi tiết tại đây. :P
Mình cài plugin thì trong wp-admin thừa 1 đoạn mã gì đó,
Lỗi 404 này thì nên cài plugin hay dùng code hay hơn Hiếu nhỉ?
wp-admin thì bạn nên chặn index trong robots.txt đi. Sau đó yêu cầu xóa link trong Google Webmaster. Thế là hết 404 ngay ấy mà. Chẳng cần code hay plugin gì cả. :D
Một cách nữa mà không cần dùng đến Plugin đó chính là thêm đoạn mã sau vào file 404.php trong theme đang sử dụng:
Em đang dùng cách này nên chia sẻ với mn :)
Cũng là một cách hay. :D
Khác nhau giữa:
header(“HTTP/1.1 301 Moved Permanently”);
và
header(“HTTP/2 301 Moved Permanently”);
là như thế nào ý admin nhỉ?
Giống nhau bạn ơi. HTTP/1.1 là cách gọi khác của HTTP/2 thôi.
Nếu số lượng link 404 là hàng trăm link mà thêm code chuyển hướng này thì có bị phạt gì ko bạn nhỉ?
Mình nghĩ là không sao. Trước giờ mình vẫn redirect trang 404 về trang chủ, chỉ mới bỏ gần đây do lượng link 404 không còn nhiều. Trên thực tế cũng chả có giải pháp nào tối ưu hơn để xử lý hàng trăm link 404 cả. :P
Mình đang có 1 trang Bizweb (Sapo) mà có khoảng 100 link 404. Bạn biết cách xử lý dành cho Bizweb hông :D Mình thử thêm đoạn code như WP thì ko dc. hehe
Bizweb thì mình chịu. Liên hệ support của bên đó hỏi thử xem. :P
bác ơi sao em sửa cái này y như bác trong file 404 them mà ko chạy dc nhỉ bác chỉ giúp em với ạ. em cảm ơn bác
Vấn đề là theme của bạn có sẵn file 404.php không? Nếu không có thì bạn phải tiến hành khai báo thêm trong functions.php (và một số file liên quan khác) thì nó mới hoạt động được. Tốt nhất bạn cứ sử dụng plugin nếu không thành thạo về PHP, nó không làm site nặng thêm đâu mà lo. :P
dạ vâng ạ. em có file 404 trong them ạ. lần trước em làm dc mà e mới uplaij code lên h thêm lại nó không chạy dc ạ. em cảm ơn bác
File 404 của em đó ạ.
Bạn up code lên GistHub rồi post link vào đây nhé. Bạn post code trực tiếp nó không hiển thị đâu. Trừ khi chèn thẻ code vào. :P
Code ày của bạn xài thế nào vậy? Mình add vào file 404 mà ko có được :(
Cảm ơn bạn rất nhiều. Mình đau đầu với lỗi Not Found đến tức điên lên. May mà đọc được bài viết của bạn và mình đã khác phục được nó đơn giản.
Nhân tiện cho mình hỏi thêm là. Việc cài plugin All 404 Redirect to Homepage có thể làm cho website bị chậm hơn. Vậy sau khi đã xử lý xong các lỗi và redirected nó vê Homepage rồi thì mình gỡ plugin này ra thì có ảnh hưởng gì đến các lỗi đã khắc phục không?.
Cảm ơn bạn nhiêu!
Nếu bạn redirect bằng plugin thì phải duy trì thường trực trên site nhé. Xóa hoặc deactive là sẽ mất tác dụng. Bởi vì nó redirect bằng PHP chứ không phải bằng file .htaccess.