關閉目錄瀏覽

  1. httpd 沒限制列出目錄設定時,當連結到該網頁又沒有預設的 index.html 或 index.php 等檔案時,就會列出 http 伺服器目錄下的檔案如下圖。
    Image httpdindex
  2. 用戶可以看光網站內的所有檔案,對網站安全威脅很大,所以如果不是要架設一個類似 ftp 伺服器,提供一般用戶下載檔案用,最好還是在 httpd.conf 指定的網頁目錄加上 Options -Indexes,取消列出目錄檔案。
    [root@kvm8 ~]# vim /etc/httpd/conf/httpd.conf 
    <Directory "/var/www/html">
        Options -Indexes
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. 設定完必須啟動 httpd 服務或 reload 設定參數。
    [root@kvm8 ~]# /etc/init.d/httpd restart
    Stopping httpd:                                            [  OK  ]
    Starting httpd:                                            [  OK  ]
    
  4. httpd 限制列出目錄,再連結網址已無法存取。
    Image httpdindex1
  5. 如果 /var/www/html 目錄下有些目錄必須開放瀏覽,例如 repo server的目錄,因此無法以 -Indexes 選項限制整個根目錄不列出目錄,但在 /var/www/html 的某些目錄卻又不希望列出目錄,此狀況可以在該目錄下產生一個空的 index.html,則只要連到該目錄就會以空白頁出現。下面例子是在 abc 目錄下產生空白 index.html,則在使用 Indexes 選項下,連到 http://kvm8.deyu.wang/abc 就會出現空白頁。
    [root@kvm8 ~]# cd /var/www/html/abc
    [root@kvm8 abc]# touch index.html
    
  6. 另一種方法還是在 httpd.conf 指定的網頁目錄加上 Options -Indexes,取消列出目錄檔案。在 httpd.conf 中將開放瀏覽的目錄獨立設定 Indexes,則連到 http://kvm8.deyu.wang/abc 時就會到出目錄中的檔案。
    [root@kvm8 ~]# vim /etc/httpd/conf/httpd.conf 
    <Directory "/var/www/html/abc">
        Options Indexes
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>