[Apache] Fix lỗi Web Server Apache – No matching DirectoryIndex (index.html) found

Bài hướng dẫn này có nội dung chủ yếu là tìm cách giải quyết cho lỗi được thông báo bởi dịch vụ Apache có dạng như sau :

[....]: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive

Bài viết này có thể áp dụng hầu hết cho các hệ thống có sử dụng dịch vụ Web Server Apache về việc hiểu vấn đề chúng ta cần fix chỗ nào là được. Ở đây mình sẽ ví dụ sử dụng hệ thống CentOS.

Ví dụ cụ thể: phpMyAdmin có chứa file “index.php” khi cài đặt và vận hành. Bạn sẽ nhận phải thông báo này khi kiểm tra file “error.log“, thì là do cấu hình chưa phù hợp ở Web Server Apache.

[autoindex:error] [pid 20115] [client 192.168.1.100:50800] AH01276: Cannot serve directory /usr/share/phpMyAdmin/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive

 
DirectoryIndex là phần chỉ định file sẽ load đại diện mặc định cho nội dung directory.

Giả sử, bạn truy cập URL “https://cuongquach.com/” , thì Web Server không biết phải load trang này là phải load file gì nếu như bạn không cấu hình redirect .htaccess hay cấu hình Nginx để chỉ định load file mặc định. Nó sẽ khác nếu bạn truy cập URL “https://cuongquach.com/index.php“, Web Server biết nó phải load file gì để generate nội dung website cho bạn.

Như vậy có thể hiểu, “DirectoryIndex” hay các nội dung cấu hình tương đương khác trên các Web Server, nhằm giúp Web Server khi load các URL tương đối sẽ tìm đến file được chỉ định mặc định, thường sẽ là “index.php index.html index.htm“.

Với thông báo lỗi trên của phpMyAdmin, xảy ra khi Apache cố gắng truy cập file đại diện cho trang mặc định đầu tiên của đường link tương đối đó, nhưng không tìm thấy file được cần tìm “index.html” mà chỉ thấy “index.php” nhưng không được cấu hình load file này. Nếu file đại diện không được liệt kê trong danh mục chỉ định, thì Web Server sẽ không biết phục vụ file nào khi người dùng truy xuất tới link tương đối.

Ví dụ, phpMyAdmin sử dụng “index.php” khi hoạt động, chứ không phải “index.html“.

Mặc định Apache được cấu hình DirectoryIndex như sau :

<IfModule dir_module>
      DirectoryIndex index.html
</IfModule>

 
-> Điều đó có nghĩa Apache chỉ tìm kiếm file index directory có tên là “index.html“.

Trong trường hợp này chúng ta sẽ thêm “index.php” vào nội dung cấu hình “DirectoryIndex“.

# vi /etc/httpd/conf/httpd.conf

Đổi :

<IfModule dir_module>
     DirectoryIndex index.html
</IfModule>

 
Sang :

<IfModule dir_module>
     DirectoryIndex  index.php index.html
</IfModule>

 
Sau đó lưu file, thoát rồi khởi động lại dịch vụ Web Server Apache.

# /etc/init.d/httpd restart

 

Bài viết đến đây là kết thúc rồi.

Previous article[MySQL] Hướng dẫn gỡ cài đặt dịch vụ MySQL sạch hoàn toàn trên Ubuntu
Next article[ShellScript] Hướng dẫn sắp xếp thông tin địa chỉ IP theo thứ tự với chương trình lệnh “sort”
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !