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ó 2 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.
Redirect trang bị lỗi 404 bằng code
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. :)
Cảm ơn bài viết của bác Hiếu, loay hoay mãi ko biết nên code hay là tạo trang mới cho chuyển hướng. Đọc bài viết của bác xong làm cái plugin rồi cho chuyển hướng lỗi 404 tới trang chủ luôn.
Chuyển hướng 404 có chuyển hướng link từ bài viết về trang chủ không anh?
Có bạn nhé. Tất cả các link là 404 đều có thể redirect về trang chủ hết.
Mình muốn chuyển hướng toàn bộ url của domain cũ sang 1 page của domain mới bằng plguin này đc k nhỉ?
Không bạn ạ. Thay vào đó bạn có thể dùng code sau đây (chèn vào file .htaccess đặt trong trong thư mục của domain cũ):
Nhớ thay link cho phù hợp. :P
.* ý là toàn bộ url của domain cũ, chỗ còn lại là page của domain mới phài k bạn?
Không. Bạn chỉ cần thay cái link
https://domain.com/page.html
bằng link trang đích thôi. Ngoài ra không phải chỉnh sửa gì cả.Bạn có thể giải thích giúp mình ý nghĩa của từng tham số đc k ạ? Mình muốn hiểu rõ chút để tự áp dụng các case khác. Cảm ơn bạn.
–
Options +FollowSymLinks
: là một chỉ thị Apache, điều kiện tiên quyết chomod_rewrite
.–
RewriteEngine On
: cho phépmod_rewrite
.–
RewriteRule
: định nghĩa một quy tắc cụ thể.– Chuỗi ký tự đầu tiên sau
RewriteRule
: xác định URL gốc trông như thế nào.– Chuỗi ký tự thứ hai sau
RewriteRule
: định nghĩa URL mới.–
[R=301,L]
: thực hiện chuyển hướng 301 và dừng bất kỳ quy tắc rewrite nào ảnh hưởng đến URL này.Vậy là mình hiểu cụm ký từ (.*) sẽ đại diện cho mọi url ở domain cũ, từ đó url nào cũng sẽ được 301 về chuỗi ký tự thứ hai sau RewriteRule.
Mình hiểu vậy có đúng không bạn?
Đúng rồi bạn.
Bạn ơi mình muốn chuyển:
DomainA.com => DomainB.com
DomainA.com/pageA.html =>DomainB.com/pageA
Mình đã thử thay cú pháp: RewriteRule https://domain.com/page.html [R=301,L]
nhưng không được, bạn xem giúp mình với.
Bạn dùng code này để redirect toàn bộ link từ domain A sang link tương ứng ở domain B:
Bạn ơi mình đọc google guide thì họ bảo nên chuyển homepage về homepage, page còn về page con tương ứng.
Mình hỏi thật, bạn đã thử chưa? Code mình vừa đưa chính là để redirect trang chủ về trang chủ, trang con về trang con tương ứng đấy. Còn ai trồng khoai đất này nữa?
Mình chạy rồi bạn ạ và kết quả như sau (mình đã thay ký tự sau RewriteRule là 1 page con của domain mới: DomainB.com/pageA)
DomainA.com/pageA.html =>DomainB.com/pageA => 301 ok.
DomainA.com => DomainB.com => 301 vẫn về page con của domain mới mà không về homepage của domain mới.
Bạn có thể chỉ giúp mình chỗ nào để đọc về các lệnh chuyển hướng 301 của apache (Tiếng Việt).
Cuối cùng rất cảm ơn bạn đã kiên trì giúp đỡ mình.
Mình đã bảo rồi, với 2 nhu cầu trên, bạn cứ để nguyên code cho mình. Thay cái link trong code thành domain B là được. Đơn giản nó là:
RewriteRule ^(.*)$ http://domainb.com/$1 [R=301,L]
Ai bảo bạn modify code làm gì? Đã không hiểu rõ về kỹ thuật rồi mà cứ thích nghịch dại rồi kêu không được này, không được nọ. Rõ mệt. =.=!
Rất xin lỗi bạn.
Do mình tìm hiểu sai ý nghĩa của các lệnh nên code bạn gửi đã chạy nhưng lại chưa thực hiện được mong muốn của mình, mình trình bày lại như sau.
Mình có domain A và các page con bị hỏng cần chuyển như sau (Các page con bị hỏng ở domain cũ có đường link không tuân theo quy tắc nào cả.)
1. DoaminA.com
2. DomainA.com/page1
3. DomainA.com/pageA.html
4. DomainA.com/trang123.htm
5. DomainA.com/trang245/trangcon123.htm
Và domain B có 1 page như sau:
1. DomainB.com
2. DomainB.com/trangmoi
Bây giờ mình cần chuyển hướng như hình sau: https://prntscr.com/kggltp
Cấu trúc URL nó bị thay đổi, không tương xứng tuy nhiên vẫn đảm bảo là homepage sang homepage và trang con sang trang con.
Cảm ơn bạn rất nhiều.
Nếu vậy thì bạn cài plugin vào mà redirect. Nghiên cứu htaccess làm gì cho mất công. Hiệu quả cũng như nhau. Sử dụng Redirection hoặc Simple 301 Redirects chẳng hạn. Đằng nào thì cũng phải redirect từng link thôi. Chả có cái quy tắc nào phù hợp với yêu cầu của bạn đâu.
Cho mình hỏi HTTP/2 và HTTP/1.1 thì nên chọn sửa theo cái nào thì tối ưu nhất?
Cảm ơn!
HTTP/2 tất nhiên là tốt hơn HTTP/1.1 rồi bạn.
MÌnh ko muốn redirect về trang chủ … mà muốn redirect về một bài viết cố định thì doạn code PHP trên sữa như thế nào vậy ad ??
ui minh làm dc rồi :))
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!
Ông ơi, có plugin nào mà chuyển link lỗi sang link tương tự không ông, ví dụ như :
domain.com/wordpress-la-gi bị lỗi
và link khác là domain.com/wordpress-cach-su-dung
cùng từ wordpress và nó tự động di chuyển tới link 2 bởi vì có từ wordpress liên quan tới nhau
Có plugin nào như v k ông
Có một plugin sở hữu chức năng như vậy là Smart 404 nhưng lâu lắm rồi không được cập nhật nữa. Bạn thử xem sao.
cám ơn ông :D
Bạn cho mình hỏi header 302 liệu có ổn không? Kiểu mình chỉ redirect tạm thời vì rất có thể link đó sau này sẽ dùng lại!
Không vấn đề gì bạn nhé. Nếu chỉ tạm thời thì có thể dùng 302 thay cho 301.
Mình hỏi chút là có nên chuyển hướng về trang chủ không? Như thế thì có cái lợi và cái hại nào cho seo rất mong bạn chia sẻ nhé.
Thanks
Nếu quá nhiều lỗi 404 thì nên chuyển hướng về trang chủ cho nhanh. Còn nếu vẫn kiểm soát được thì tự redirect về trang cụ thể nào đó sẽ tốt hơn.
Cú pháp chuyển trang về một trang cụ thể kiểu gì nhỉ bạn?
Dùng plugin hoặc file htaccess mà redirect. WordPress thiếu gì plugin có thể redirect 301 từ link này qua link khác.
Chủ yếu là mình không muốn dùng plugin cho nặng web ra thôi
Redirect bằng htaccess. Nhưng như thế thì hơi lằng nhằng và mất công. Mình dùng Yoast SEO Premium có sẵn tính năng redirect luôn.
Nếu dùng cấu trúc này mà kết hợp với Yoast SEO thì các bạn nên lưu ý nhé, cẩn thận không thì tất cả các danh mục đều bị chuyển hướng về trang chủ đó.