CodeIgniter bỏ index.php trên URL. Đảm bảo .htaccess và mod_rewrite đã hoạt động?

Khi deploy project lên server, chắc hẳn không ít bạn đã từng gặp lỗi không nhận diện được index.php 1 cách tự động như dưới localhost.

Trong bài viết này, mình sẽ chia sẻ cách fix lỗi này một cách đầy đủ.

Trước hết chúng ta cần kiểm tra các vấn đề sau:

  • Kiểm tra xem .htaccess có hoạt động không?
  • Kiểm tra xem mod_rewrite có hoạt động không?
  • Thực hiện update cấu hình

Kiểm tra .htaccess có hoạt động không?

Cách đơn giản nhất để kiểm tra điều này, bạn mở file .htaccess lên. Thêm bất kì đoạn code nào vào đầu file. VD: <test>. Sau đó khởi động lại Apache. Theo dõi trình duyệt nếu nhận được lỗi như sau thì .htaccess của bạn đã hoạt động bình thường:

Nếu bạn không thấy ‘Interal Server Error’, Apache của bạn đã bỏ qua tệp .htaccess và bạn cần khắc phục điều đó. Nói chung, Apache bỏ qua tệp .htaccess vì cấu hình mặc định đang là AllowOverride none . Kiểm tra cấu hình máy chủ ảo của bạn và thêm / sửa đổi thành AllowOverride All.

Tìm và fix file: /etc/apache2/apache2.conf

Ví dụ:

 

<Directory /var/www/site/example.com/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Kiểm tra mod_rewrite có hoạt động không?

Các bạn thực hiện theo hướng dẫn ở link sau đây để bật mod_rewrite nhé.

https://stackoverflow.com/questions/869092/how-to-enable-mod-rewrite-for-apache-2-2

Cuối cùng, update file .htaccess!


Bước 1: Cập nhật file .htaccess của bạn như sau:

 

Bước 2: Xóa index.php trong file config.php

$config[‘index_page’] = ”;

Bước 3:

Sửa:

$config['uri_protocol'] ="AUTO"

Thành:

$config['uri_protocol'] ="REQUEST_URI"

Bước 4: Khởi động lại Apache. Và tận hưởng kết quả!

Mọi người có thắc mắc gì để lại comment bên dưới bài viết nhé.

Thấy hữu ích thì chia sẻ cho bạn bè nhé. Mình cảm ơn.

Kinhnghiemlaptrinh.com

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *