Khi triển khai Laravel trên shared host, việc tên miền không trỏ đúng vào thư mục public sẽ gây lỗi truy cập và tiềm ẩn rủi ro bảo mật do làm lộ các tệp tin nhạy cảm. Bài viết này sẽ hướng dẫn bạn dùng tệp .htaccess để chuyển hướng truy cập một cách chính xác, giúp ứng dụng hoạt động đúng và an toàn.
Lý do cần thêm file .htaccess để chuyển hướng đến thư mục public trong Laravel
Theo kiến trúc mặc định của Laravel, toàn bộ mã nguồn ứng dụng (model, controller, route,…) được đặt bên ngoài thư mục public nhằm tăng cường tính bảo mật. Tuy nhiên, khi triển khai trên các môi trường hosting phổ biến, tên miền thường được cấu hình để trỏ vào thư mục gốc (root) của dự án thay vì thư mục public.
Tình trạng này dẫn đến việc truy cập website sẽ gây ra lỗi “403 Forbidden” hoặc làm lộ cấu trúc thư mục. Giải pháp là sử dụng tệp .htaccess để chuyển hướng (redirect) toàn bộ yêu cầu truy cập vào thư mục /public của Laravel.
Cách thêm file .htaccess để chuyển hướng đến thư mục public trong Laravel
Bước 1: Xác định vị trí file .htaccess cần thêm
Bước 2: Thêm nội dung chuyển hướng
Bước 3: Lưu và kiểm tra kết quả
Bước 1: Xác định vị trí file .htaccess cần thêm
Đầu tiên bạn mở thư mục chứa toàn bộ mã nguồn Laravel (nằm cùng cấp với thư mục public). Trường hợp chưa có file .htaccess, hãy bắt đầu tạo mới file .htaccess.

Bước 2: Thêm nội dung chuyển hướng
Tiếp theo, dán đoạn mã sau vào file .htaccess:
<IfModule mod_rewrite.c>
# That was ONLY to protect you from 500 errors
# if your server did not have mod_rewrite enabled
RewriteEngine On
# RewriteBase /
# NOT needed unless you're using mod_alias to redirect
RewriteCond %{REQUEST_URI} !/public
RewriteRule ^(.*)$ public/$1 [L]
# Direct all requests to /public folder
</IfModule>Giải thích:
- <IfModule mod_rewrite.c>: Đây là một điều kiện kiểm tra xem module mod_rewrite có được bật trên máy chủ không. Điều này đảm bảo rằng đoạn mã chỉ hoạt động khi module mod_rewrite đã được bật.
- RewriteEngine On: Dòng này bật tính năng rewrite (chuyển hướng) trên máy chủ.
- RewriteCond %{REQUEST_URI} !/public: Dòng này là một điều kiện sử dụng để kiểm tra nếu đường dẫn yêu cầu không bắt đầu bằng “/public”. Điều này đảm bảo rằng các yêu cầu đến thư mục “public” đã được chuyển hướng sẽ không bị lặp lại.
- RewriteRule ^(.*)$ public/$1 [L]: Dòng này là quy tắc rewrite thực tế. Nó áp dụng khi điều kiện ở trên được đáp ứng. Dòng này chuyển hướng toàn bộ đường dẫn yêu cầu (bao gồm cả các phần con) đến thư mục “public”. Phần [L] cho biết rằng đây là quy tắc cuối cùng (last rule) và không cần kiểm tra các quy tắc rewrite khác nữa.
- </IfModule>: Đây đóng kết thúc điều kiện kiểm tra module mod_rewrite.

Bước 3: Lưu và kiểm tra kết quả
Sau khi lưu file .htaccess, truy cập lại website qua domain chính, sẽ có 2 trường hợp:
- Nếu cấu hình đúng, website Laravel sẽ hiển thị trang chủ bình thường.
- Nếu vẫn lỗi 500 hoặc trắng trang bạn hãy kiểm tra lại xem hosting có hỗ trợ mod_rewrite hay chưa, hoặc bật debug log để kiểm tra thêm.

Sau khi cấu hình file .htaccess, toàn bộ yêu cầu truy cập sẽ được tự động định tuyến về thư mục public. Điều này đảm bảo website Laravel có thể vận hành chính xác trên shared hosting mà không đòi hỏi các thao tác cấu hình phức tạp.
Sử dụng file .htaccess là giải pháp hiệu quả để triển khai ứng dụng Laravel một cách an toàn và đúng chuẩn trên môi trường hosting sử dụng Apache. Ưu điểm của phương pháp này là sự nhanh chóng, đơn giản trong triển khai và phù hợp ngay cả với người dùng không có nhiều chuyên môn kỹ thuật.
Lưu ý
Để đảm bảo quá trình diễn ra suôn sẻ, bạn nên kiểm tra module mod_rewrite đã được kích hoạt và quyền truy cập thư mục đã được thiết lập chính xác trước khi tải file lên nhằm tránh các lỗi không mong muốn.
Trên đây là hướng dẫn chi tiết cách sử dụng tệp .htaccess để chuyển hướng toàn bộ truy cập vào thư mục public của dự án Laravel. Nếu bạn có bất kỳ thắc mắc hoặc gặp khó khăn trong quá trình cấu hình, hãy liên hệ trực tiếp với đội ngũ kỹ thuật Vietnix qua các kênh hỗ trợ để được tư vấn và giải quyết vấn đề một cách nhanh chóng, hiệu quả.
VIETNIX – DỊCH VỤ HOSTING, VPS TỐC ĐỘ CAO, ỔN ĐỊNH, BẢO MẬT
- Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh
- Điện thoại: 1800 1093
- Email liên hệ: sales@vietnix.com.vn
- Website: https://vietnix.vn/

