Một số trường hợp sau khi bạn chuyển hosting, cài đặt lại website truy cập site home vẫn hoạt động bình thường và khi truy cập các site con như (bài viết, trang, chuyên mục) đều gặp lỗi 404 not found, tuy nhiên lưu ý là bạn chỉ chuyển web, hoặc làm mới website nhưng các bài viết, database không có thay đổi gì nhé.

Nguyên nhân sinh ra lỗi 404

Có rất nhiều nguyên nhân phát sinh ra lỗi 404 nhưng theo mình thì thông thường lỗi 404 thường gặp phải trong 3 trường hợp sau:

Thay đổi URL: đây là trường hợp hay mắc phải khi bạn thay đổi URL của đường dẫn cũ và không thông báo cho Google thì hiển nhiên các con Bot Google không truy cập được dẫn đến phát sinh lỗi 404
Địa chỉ URL không tồn tại do sơ ý hay bất cẩn xóa đường dẫn khiến cho phát sinh lỗi 404 trong website
Quên bật chế độ mod_rewrite trong .htaccess khi chuyển hướng điều đó sẽ dẫn đến tình trạng lỗi 404 not found hàng loạt

Khi gặp lỗi 404 bạn sẽ nhận được các thông báo sau:

404 Error
404 Not Found
The requested URL was not found on this server
HTTP 404 not Found
404 Page not Found

Bạn đừng lo lắng mình sẽ hướng dẫn bạn xử lý nhanh như sau.

Cách 1: Chỉnh đường dẫn tĩnh (permalink)
Bạn đăng nhập vào admin WordPress tìm đến Cài đặt => Đường dẫn tĩnh


Sau đó bạn chọn Tùy biến và tiến hành save lại, bạn nên clear cache trình duyệt rồi hãy kiểm tra lại.

Cách 2: Chỉnh sửa trong file .htaccess
Mặc định file .htaccess là file ẩn, vì thế bạn phải show hidden để hiện các file ẩn này lên.


Tiếp đến bạn mở và chỉnh sửa file .htaccess và thêm vào đoạn mã bên dưới, nếu file .htaccess không có bạn thực hiện tạo mới nhé.

Đoạn mã dành cho WordPress

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Nếu bạn dùng WordPress Multisite thì sử dụng đoạn mã sau

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
Bây giờ bạn hãy kiểm tra lại lỗi 404 còn không nhé!