Bạn vừa cài WordPress trên VPS DirectAdmin chạy Nginx, trang chủ mở ngon lành nhưng bấm vào bất kỳ bài viết hay trang con nào cũng nhận về thông báo 404 Not Found? Đây là lỗi rất phổ biến khi kết hợp WordPress với Nginx trên DirectAdmin, và tin vui là cách sửa chỉ mất khoảng 5 phút với vài lệnh SSH.
Trong bài viết này, Hoidapwp sẽ hướng dẫn bạn cách cấu hình Nginx trên DirectAdmin để sửa dứt điểm lỗi 404 cho WordPress, không cần cài thêm plugin hay đổi webserver.
Vì sao WordPress báo 404 khi chạy Nginx trên DirectAdmin?
Khác với Apache, Nginx không đọc file .htaccess. Khi bạn bật đường dẫn tĩnh (permalink) dạng đẹp như /ten-bai-viet/, WordPress dựa vào quy tắc rewrite trong .htaccess để chuyển mọi yêu cầu về file index.php xử lý. Apache làm việc này tự động, còn Nginx thì không.
DirectAdmin tuy đã tích hợp sẵn Nginx nhưng template mặc định của nó lại không có đoạn cấu hình rewrite dành cho WordPress. Kết quả là trang chủ vẫn vào được (vì nó trỏ thẳng tới index.php), còn mọi đường dẫn khác đều bị Nginx hiểu là file thật trên ổ đĩa — không tìm thấy thì trả về 404.
Muốn sửa, bạn chỉ cần bổ sung một đoạn cấu hình try_files vào template Nginx của DirectAdmin, rồi tạo lại cấu hình cho toàn bộ domain. Đoạn cấu hình này có sẵn trên bản Pro Pack của DirectAdmin, nhưng với bản thường bạn hoàn toàn có thể tự thêm bằng tay theo hướng dẫn dưới đây.

Chuẩn bị trước khi cấu hình
Trước khi bắt đầu, bạn cần có quyền SSH vào VPS với tài khoản root (hoặc tài khoản có quyền sudo). Nếu chưa quen dùng SSH, bạn có thể xem lại hướng dẫn đăng nhập SSH bằng SSH Key đã đăng trước đó trên Hoidapwp.
Ngoài ra, bạn nên sao lưu lại file template gốc trước khi chỉnh sửa, để có thể khôi phục nếu thao tác sai. Các bước dưới đây đều thực hiện trên template tùy chỉnh (custom template) nên không làm ảnh hưởng tới file gốc của DirectAdmin.
Cách cấu hình Nginx trên DirectAdmin để fix lỗi 404 WordPress
Bước 1: Kết nối SSH và tạo template tùy chỉnh
Kết nối SSH vào VPS, sau đó chạy các lệnh sau để vào thư mục template tùy chỉnh và sao chép file nginx_php.conf gốc sang đó:
cd /usr/local/directadmin/data/templates/custom cp ../nginx_php.conf . nano /usr/local/directadmin/data/templates/custom/nginx_php.conf
Lệnh cp ở trên sao chép file cấu hình Nginx dành cho PHP từ template gốc sang thư mục custom. Mọi chỉnh sửa từ đây sẽ chỉ áp dụng cho template tùy chỉnh, DirectAdmin sẽ ưu tiên dùng file này thay cho file gốc mỗi khi tạo lại cấu hình.
Bước 2: Thêm đoạn try_files vào cuối file
Trong trình soạn thảo nano, cuộn xuống cuối file và thêm đoạn code sau:
location / {
try_files $uri $uri/ /index.php?$args ;
}
Đoạn cấu hình này bảo Nginx thử tìm file theo đúng đường dẫn yêu cầu trước ($uri), nếu không có thì thử thư mục ($uri/), và cuối cùng chuyển toàn bộ yêu cầu còn lại về index.php kèm theo tham số truy vấn. Nhờ vậy, các đường dẫn tĩnh của WordPress sẽ được xử lý đúng thay vì báo 404.
Thêm xong, bạn bấm Ctrl + O rồi Enter để lưu file, sau đó bấm Ctrl + X để thoát khỏi nano.
Bước 3: Tạo lại cấu hình Nginx cho toàn bộ domain
Sau khi sửa xong template, bạn cần phân quyền lại cho file vừa tạo và chạy lệnh tạo lại cấu hình Nginx cho tất cả tên miền đang chạy trên VPS:
chown diradmin:diradmin nginx_php.conf cd /usr/local/directadmin/custombuild ./build rewrite_confs
Lệnh ./build rewrite_confs sẽ đọc lại template (bao gồm cả file custom bạn vừa sửa) và viết lại file cấu hình Nginx cho từng domain, đồng thời khởi động lại Nginx để áp dụng thay đổi.
Bước 4: Kiểm tra kết quả
Bây giờ bạn mở lại website và thử bấm vào vài bài viết, trang chuyên mục hoặc trang tĩnh. Nếu mọi trang con đều mở bình thường thì lỗi 404 đã được sửa xong.
Nếu vẫn còn trang báo 404, bạn hãy kiểm tra lại hai điểm sau: thứ nhất, chắc chắn đoạn try_files đã được thêm đúng vào file trong thư mục custom (không phải file gốc); thứ hai, chạy lại lệnh ./build rewrite_confs và xem có thông báo lỗi nào trong quá trình tạo lại cấu hình hay không.
Xử lý lỗi chưa cài nano trên VPS
Nếu khi chạy lệnh nano mà hệ thống báo không tìm thấy lệnh, nghĩa là VPS của bạn chưa cài trình soạn thảo văn bản nano. Bạn cài đặt nano bằng lệnh sau rồi làm lại từ Bước 1:
# CentOS/AlmaLinux/Rocky Linux yum -y install nano
Trên Ubuntu/Debian, bạn dùng lệnh apt -y install nano thay cho yum. Sau khi cài xong, bạn quay lại thao tác chỉnh sửa file template như bình thường.
Một vài lưu ý quan trọng
Thứ nhất, đoạn cấu hình try_files chỉ áp dụng cho các website chạy thuần Nginx hoặc Nginx làm webserver chính. Nếu VPS của bạn đang chạy chế độ Nginx + Apache (nginx_apache), lỗi 404 thường không xảy ra vì Apache đã xử lý rewrite sẵn.
Thứ hai, sau mỗi lần DirectAdmin cập nhật phiên bản lớn, bạn nên kiểm tra lại xem file template tùy chỉnh còn nguyên vẹn hay không. Template trong thư mục custom thường được giữ lại, nhưng kiểm tra nhanh sẽ giúp bạn tránh lỗi 404 quay trở lại mà không rõ nguyên nhân.
Chỉ với một đoạn cấu hình ngắn, lỗi 404 khó chịu trên WordPress chạy Nginx đã được xử lý triệt để. Chúc các bạn thành công!
👉 Cần VPS để thực hành? Đăng ký VPS BNIX tại đây
- 🏢 Chuyên thiết kế web cho doanh nghiệp và cá nhân
- 🤖 Giải pháp tự động hóa cho Doanh nghiệp và cá nhân
- 📞 0925045760
- 🌐 thietkewebdian.com
