[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

Leave a Reply

Your email address will not be published. Required fields are marked *

RELATED POST

How to automatically restart Linux services with Systemd

Getting your Linux deployments working reliably is of paramount concern for production applications. One way to guarantee that a service…

How to Install SFTPGo on Ubuntu 22.04

Setup UFW Firewall For security reasons, it is recommended to install and configure the UFW firewall in your system. First,…

Executing Bash Scripts at Startup in Ubuntu Linux

Creating a Bash script in Ubuntu To create a Bash script in Ubuntu, you can use any text editor of…

How To Clear PHP’s Opcache

PHP can be configured to store precompiled bytecode in shared memory, called Opcache. It prevents the loading and parsing of PHP…