Mình vừa thực hiện đẩy website xây dựng bằng laravel lên hosting cPanel. Dưới đây là những lưu ý cần thiết, hy vọng có thể giúp ích được cho các bạn.
1. Xóa cache trước khi đẩy code
php artisan cache:clear php artisan view:clear
2. Đẩy toàn bộ thư mục project của laravel lên thư mục gốc của website, thường là public_html
3. Thay đổi kết nối databse trong file .env cho đúng với server. Trường hợp bạn không muốn dùng file .env (vì lý do bảo mật chẳng hạn), bạn có thể chạy lệnh php artisan config:cache trên máy local của bạn, lệnh này sẽ tạo ra các file trong thư mục bootstrap/cache. Bạn cần thay đổi nội dung file bootstrap/cache/config.php cho đúng với server, các nội dung cần thay đổi bao gồm:
+ Thông tin kết nối database: Bạn có thể tìm kiếm theo từ khóa mysql
+ Thông tin các đường dẫn thư mục: vd trên máy local là D:\\projects\\dacsan36\\storage\\framework/cache/data trên server bạn sẽ thay đổi thành /home/abcklmxyz/public_html/storage/framework/cache/data. Để xác định được chính xác thư mục trên server, bạn hãy tạo ra file public/findpath.php, nội dung của file này chỉ đơn giản là
<?php echo getcwd(); ?>
Truy cập vào url domain-website-cua-ban/findpath.php, vd https://dacsan36.com/findpath.php, bạn sẽ nhận được path của thư mục public dạng /home/abcklmxyz/public_html/public.
+ Cấu hình cho https: Nếu website của bạn là https thì cần đặt
'secure' => true,
Sau đó, đẩy toàn bộ thư mục bootstrap/cache lên server.
4. Loại bỏ public khỏi Url
Tất cả các request của Laravel sẽ đi vào thư mục public nên trong Url của website sẽ có thêm "/public", ví dụ https://dacsan36.com/public. Để bỏ phần đuôi /public khỏi Url, bạn hãy tạo file .htaccess ngang hàng thư mục public như sau:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L,QSA]
</IfModule>
Nếu bạn muốn website tự động chuyển sang https mỗi khi người dùng truy cập bằng http thì có thể dùng file .htaccess như sau:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L,QSA]
</IfModule>