1. Kiểm tra cấu trúc trước khi upload
Với static site, mục tiêu đơn giản nhất là để index.html nằm ngay trong document root của domain. Trên cPanel phổ biến, document root thường là public_html hoặc một thư mục con nếu domain/addon domain được cấu hình riêng.
Kiểm tra toàn bộ đường dẫn CSS, JavaScript và hình ảnh. Nếu site được thiết kế để chạy ở domain root, đường dẫn dạng /assets/css/app.css sẽ dễ dự đoán hơn đường dẫn gắn với môi trường local.
public_html/ ├── index.html ├── assets/ ├── services/ │ └── index.html ├── .htaccess └── 404.html
2. Route và refresh trực tiếp
Route dạng thư mục như /services/ có lợi thế là Apache có thể tự tìm services/index.html. Cách này giảm phụ thuộc vào rewrite rule phức tạp và phù hợp với shared hosting.
Nếu dùng SPA client-side routing, cần cấu hình fallback đúng. Nhưng khi không cần SPA, multipage static thường đơn giản và ổn định hơn trên cPanel.
3. Dùng .htaccess vừa đủ
Chỉ thêm rule thực sự cần. Có thể dùng ErrorDocument, tắt directory listing và thêm security headers trong <IfModule> để tránh lỗi khi module Apache không có sẵn.
Options -Indexes DirectoryIndex index.html index.php ErrorDocument 404 /404.html <IfModule mod_headers.c> Header set X-Content-Type-Options "nosniff" </IfModule>
4. Final check trên domain thật
Mở trực tiếp từng route quan trọng, reload trang, test mobile menu, theme, search và form. Mở DevTools để tìm 404 asset, JavaScript error hoặc request thất bại.
Nếu có contact form PHP, hãy test bằng dữ liệu thật sau khi cấu hình email. Không nên hiển thị trạng thái thành công khi backend chưa thực sự xử lý request.