.htaccess là một tệp cấu hình Apache được sử dụng để định cấu hình các cài đặt web cụ thể. Trong Laravel, .htaccess có thể được sử dụng để chuyển hướng tất cả các yêu cầu đến thư mục public để tải được nội dung web.

Trong bài hướng dẫn này, chúng ta sẽ tìm hiểu cách cấu hình .htaccess để chuyển hướng đến public trong Laravel.

Như trong bài viết này khi truy cập web xuất hiện mã 404 do web đang truy cập vào thư mục gốc thay vì thư muc để chạy là domain/public/

iScreen Shoter Microsoft Edge 230825144115
Cấu hình .htaccess để chuyển hướng đến public trong Laravel 6

Để cấu hình .htaccess để chuyển hướng đến public, bạn cần thực hiện các bước sau:

Bước 1: Tạo file .htaccess

Đôi lúc file này không có sẵn mà bạn hãy tạo mới nó.

iScreen Shoter Microsoft Edge 230825144102
Cấu hình .htaccess để chuyển hướng đến public trong Laravel 7

Bước 2: Dán nội dung sau vào file .htaccess

Tiếp theo bạn copy nội dung sau và dán vào file .htaccess ở trong mã nguồn. File này sẽ nằm ngang hàng với thư mục public/


# 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

Ý nghĩa đoạn mã

  • : Đâ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 (conditional statement) 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.
  • : Đây đóng kết thúc điều kiện kiểm tra module mod_rewrite.

Tóm lại, đoạn mã .htaccess này có ý nghĩa chuyển hướng mọi yêu cầu đến thư mục “public” trong dự án Laravel của bạn, trừ những yêu cầu đã bắt đầu bằng “/public” để tránh lặp lại việc chuyển hướng. Điều này giúp bảo mật ứng dụng và cải thiện tính ổn định của nó.