CHƯƠNG TRÌNH GIẢM 50% GIÁ TẤT CẢ CÁC GÓI HOSTING WORDPRESS => Link giảm 50%
Trong quá trình quản trị website WordPress, sẽ có lúc bạn đổi URL bài viết, xóa chuyên mục cũ hoặc thay đổi cấu trúc website để tối ưu SEO. Khi đó các URL cũ có thể trở thành lỗi 404 nếu không được xử lý đúng cách.
Có thể bạn đang nghĩ: “Redirect 301 thì có gì đâu mà phải hướng dẫn?”
🌱 Nếu thấy bài viết hữu ích, bạn có thể ủng hộ tác giả bằng cách nhấn vào quảng cáo bên dưới — như một donate miễn phí. Bạn không mất gì nhưng chúng tôi sẽ có thêm chi phí để duy trì và vận hành website. Cảm ơn bạn! 🙏
Thực ra AI có thể tạo đoạn code này rất nhanh. Nhưng điều tôi muốn chia sẻ là một vấn đề thực tế: nhiều website đã cấu hình Redirect trong
.htaccess, sau đó bị mất mà không biết nguyên nhân và cũng không nhớ đã khai báo những URL nào.
Vì vậy bài viết này tập trung vào một giải pháp giúp Redirect 301 dễ quản lý và dễ backup hơn.
Một giải pháp đơn giản là sử dụng hook template_redirect của WordPress để thực hiện Redirect 301 từ URL cũ sang URL mới mà không cần chỉnh sửa file .htaccess.
Bài viết này sẽ giúp bạn hiểu rõ cách hoạt động và áp dụng ngay cả khi bạn chưa có nhiều kinh nghiệm lập trình WordPress.
1. Redirect 301 Là Gì Và Vì Sao Website Cần Sử Dụng?
Redirect 301 là hình thức chuyển hướng vĩnh viễn từ một URL cũ sang một URL mới.
Ví dụ:
URL cũ: https://yourwebsite.com/huong-dan-wordpress/ URL mới: https://yourwebsite.com/bai-viet/wordpress/
Khi người dùng hoặc Google truy cập URL cũ, hệ thống sẽ tự động chuyển sang URL mới.
Lợi ích của Redirect 301:
- Hạn chế lỗi 404.
- Giữ lại sức mạnh SEO của URL cũ.
- Giúp Google cập nhật cấu trúc website nhanh hơn.
- Cải thiện trải nghiệm người dùng.
- Không làm mất lượng truy cập từ các backlink cũ.
Nếu website của bạn đã hoạt động nhiều năm thì Redirect 301 gần như là việc bắt buộc mỗi khi thay đổi URL.
2. Khi Nào Nên Redirect Bằng Functions.php Thay Vì .htaccess?
Về lý thuyết, Redirect 301 bằng file .htaccess thường có tốc độ xử lý nhanh hơn vì Apache thực hiện redirect trước khi WordPress được tải.
Tuy nhiên trong thực tế quản trị website WordPress nhiều năm, tôi thường ưu tiên lưu các quy tắc Redirect 301 trong code WordPress thay vì đặt trực tiếp trong .htaccess.
Nguyên nhân lớn nhất là file
.htaccesscó thể bị ghi đè bất cứ lúc nào.
Một số trường hợp thường gặp:
- Thay đổi cấu trúc Permalink trong WordPress.
- Cài đặt hoặc cập nhật plugin SEO.
- Cài đặt plugin Cache.
- Cài đặt plugin Security.
- Chuyển hosting hoặc restore website từ backup.
- Một số plugin tự động cập nhật file
.htaccess.
Ví dụ:
# BEGIN WordPress ... # END WordPress
Khi WordPress hoặc plugin cập nhật lại phần cấu hình này, các dòng Redirect 301 được thêm thủ công có thể vô tình bị mất.
Điều nguy hiểm hơn là phần lớn quản trị viên thường:
- Không ghi chú lại các Redirect đã tạo.
- Không lưu riêng danh sách Redirect.
- Không backup file
.htaccesstrước khi chỉnh sửa.
Kết quả là vài tháng sau, khi website xuất hiện hàng loạt lỗi 404, gần như không ai nhớ chính xác trước đây đã từng redirect những URL nào.
Trong khi đó nếu khai báo bằng code:
$redirects = array(
'/huong-dan-wordpress/' => 'https://yourdomain.com/bai-viet/wordpress/',
'/download-theme-free/' => 'https://yourdomain.com/bai-viet/wordpress/',
);
Toàn bộ lịch sử redirect sẽ được lưu cùng source code của website.
Ưu điểm:
- Dễ tìm kiếm và kiểm tra.
- Có thể backup cùng source code.
- Có thể quản lý bằng Git nếu sử dụng version control.
- Không lo bị plugin hoặc WordPress ghi đè.
- Dễ dàng thêm, sửa hoặc xóa redirect khi cần.
Đối với các website đã hoạt động nhiều năm và có hàng trăm URL cũ, việc quản lý Redirect 301 bằng code thường giúp dễ kiểm soát hơn rất nhiều so với việc lưu rải rác trong file .htaccess.
3. Đoạn Code Redirect 301 Đơn Giản Dành Cho Người Mới
Ví dụ dưới đây sử dụng prefix wpshare247_ để tránh trùng lặp với các function khác trong WordPress.
function wpshare247_redirect_old_urls() {
$redirects = array(
'/huong-dan-wordpress/' => 'https://yourdomain.com/bai-viet/wordpress/',
'/hoc-wordpress-co-ban/' => 'https://yourdomain.com/bai-viet/wordpress/',
'/download-theme-free/' => 'https://yourdomain.com/bai-viet/wordpress/',
// CẬp nhật thêm các url của bạn tại đây.........
);
$current_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
if (isset($redirects[$current_path])) {
wp_redirect($redirects[$current_path], 301);
exit;
}
}
add_action('template_redirect', 'wpshare247_redirect_old_urls');
Đoạn code trên có nhiệm vụ:
- Kiểm tra URL hiện tại.
- So sánh với danh sách URL cũ.
- Nếu tìm thấy sẽ tự động Redirect 301 sang URL mới.
Bạn chỉ cần thêm hoặc xóa các dòng trong mảng $redirects khi cần cập nhật.
4. Giải Thích Chi Tiết Từng Phần Trong Đoạn Code
Danh sách URL cần Redirect
$redirects = array( '/huong-dan-wordpress/' => 'https://yourdomain.com/bai-viet/wordpress/', );
Có thể hiểu đây là một bảng ánh xạ:
| URL cũ | URL mới |
|---|---|
| /huong-dan-wordpress/ | /bai-viet/wordpress/ |
Mỗi khi muốn redirect thêm một URL, bạn chỉ cần thêm một dòng mới.
Lấy URL Hiện Tại
$current_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
Ví dụ: https://website366.com/huong-dan-wordpress/
Kết quả sẽ là: /huong-dan-wordpress/
WordPress sẽ dùng giá trị này để kiểm tra xem URL có nằm trong danh sách redirect hay không.
Thực Hiện Redirect 301
wp_redirect($redirects[$current_path], 301); exit;
Tham số 301 giúp trình duyệt và Google hiểu rằng URL đã được chuyển hướng vĩnh viễn.
5. Phiên Bản Nâng Cao Giữ Nguyên UTM Và Query String
Trong thực tế, nhiều URL có thêm tham số quảng cáo hoặc tracking như:
https://yourdomain.com/huong-dan-wordpress/?utm_source=facebook
Nếu redirect không đúng cách, các thông tin này sẽ bị mất.
Ví dụ nâng cao:
function wpshare247_redirect_old_urls() {
if (is_admin()) {
return;
}
$redirects = array(
'/huong-dan-wordpress/' => 'https://yourdomain.com/bai-viet/wordpress/',
'/hoc-wordpress-co-ban/' => 'https://yourdomain.com/bai-viet/wordpress/',
);
$current_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
if (isset($redirects[$current_path])) {
$new_url = $redirects[$current_path];
if (!empty($_SERVER['QUERY_STRING'])) {
$new_url .= '?' . $_SERVER['QUERY_STRING'];
}
wp_redirect($new_url, 301);
exit;
}
}
add_action('template_redirect', 'wpshare247_redirect_old_urls');
Kết quả:
URL cũ: https://website366.com/huong-dan-wordpress/?utm_source=facebook URL mới: https://website366.com/bai-viet/wordpress/?utm_source=facebook
Toàn bộ dữ liệu tracking vẫn được giữ nguyên.
6. Có Bao Nhiêu Cách Redirect 301 Trong WordPress?
Hiện nay có nhiều cách để Redirect 301 URL cũ sang URL mới. Tuy nhiên đối với người quản trị website WordPress, có thể chia thành 6 nhóm phổ biến sau:
Cách 1: Redirect bằng file .htaccess
Đây là cách truyền thống và có tốc độ xử lý nhanh nhất vì máy chủ web thực hiện redirect trước khi WordPress được tải.
Phù hợp với:
- Website lớn.
- Quản trị viên có kinh nghiệm về hosting hoặc server.
Nhược điểm:
- Khó quản lý khi có nhiều redirect.
- Dễ quên các quy tắc đã khai báo.
- Có nguy cơ bị ghi đè khi thay đổi cấu hình hoặc chuyển hosting.
Cách 2: Redirect bằng Functions.php
Sử dụng hook template_redirect để xử lý chuyển hướng ngay trong WordPress.
Phù hợp với:
- Website WordPress vừa và nhỏ.
- Các dự án muốn quản lý redirect bằng source code.
Ưu điểm:
- Dễ backup.
- Dễ tìm kiếm và chỉnh sửa.
- Không phụ thuộc vào file
.htaccess.
Cách 3: Redirect bằng Plugin Redirection
Các plugin chuyên dụng cho phép tạo redirect thông qua giao diện quản trị WordPress.
Phù hợp với:
- Người không biết lập trình.
- Website có số lượng redirect vừa phải.
Ưu điểm:
- Thao tác đơn giản.
- Có thể theo dõi lỗi 404.
Các plugin tốt dùng chuyển hướng 301, bạn cần tham khảo, khuyên dùng cái đầu tiên Redirection
Cách 4: Redirect bằng Plugin SEO
Một số plugin SEO như Rank Math hoặc Yoast SEO Premium tích hợp sẵn tính năng Redirect 301.
Ưu điểm:
- Quản lý tập trung SEO và Redirect trong cùng một nơi.
- Dễ sử dụng.
Cách 5: Redirect bằng Cấu Hình Web Server
Ví dụ:
- Apache
- Nginx
- LiteSpeed
Đây là phương pháp thường được áp dụng trên các hệ thống lớn có lượng truy cập cao.
Ưu điểm:
- Hiệu suất tốt.
- Không cần WordPress hoạt động để thực hiện redirect.
Cách 6: Redirect bằng PHP Thuần
Lập trình viên có thể sử dụng hàm PHP để chuyển hướng trực tiếp.
Ví dụ:
header("Location: https://domain.com/url-moi/", true, 301); exit;
Cách này ít được sử dụng trong WordPress vì hook template_redirect thường tối ưu và dễ quản lý hơn.
Nên Chọn Cách Nào?
Đối với phần lớn website WordPress doanh nghiệp, blog hoặc website dịch vụ có số lượng Redirect không quá lớn, việc sử dụng Functions.php hoặc Plugin Redirect thường là lựa chọn dễ quản lý nhất.
Trong bài viết này, chúng ta tập trung vào giải pháp template_redirect vì:
- Không cần chỉnh sửa
.htaccess. - Dễ backup cùng source code.
- Dễ kiểm soát lịch sử redirect.
- Hạn chế tình trạng mất cấu hình khi WordPress hoặc plugin cập nhật hệ thống.
Trước khi kết thúc bài viết, có thể bạn sẽ thắc mắc: “Làm thế nào để chỉnh sửa file functions.php trong WordPress?”
Đừng lo, tôi đã có một bài hướng dẫn chi tiết từ A-Z về cách tìm, chỉnh sửa và sao lưu file functions.php một cách an toàn. Bạn có thể tham khảo ngay bên dưới trước khi áp dụng đoạn code Redirect 301 trong bài viết này.
Hướng Dẫn Sử Dụng functions.php Cho Người Mới Học WordPress – Đừng Để Code Làm Bạn “Chán Ngắt”!
Kết Luận
Sử dụng hook template_redirect là một cách đơn giản để Redirect 301 URL cũ sang URL mới trong WordPress mà không cần chỉnh sửa file .htaccess.
Phương pháp này đặc biệt phù hợp với:
- Website WordPress nhỏ và vừa.
- Người mới làm SEO.
- Website thường xuyên thay đổi cấu trúc URL.
- Các dự án muốn quản lý redirect trực tiếp trong source code.
Nếu website của bạn đã hoạt động nhiều năm, hãy thường xuyên kiểm tra lỗi 404 và bổ sung Redirect 301 để giữ lại giá trị SEO cũng như mang lại trải nghiệm tốt hơn cho người dùng.
CHƯƠNG TRÌNH GIẢM 50% GIÁ TẤT CẢ CÁC GÓI HOSTING WORDPRESS => Link giảm 50%