2011-05-09 104 views
57

我有一個文件夾列表,例如:文件夾/public_html/Davood/ 和太多的子文件夾,例如:/public_html/Davood/Test1//public_html/Davood/Test1/Test//public_html/Davood/Test2/ ...否認目錄中的htaccess

我想添加一個htaccess文件爲/public_html/Davood/要拒絕目錄列表/Davood和子文件夾,可能嗎?

+0

我不明白爲什麼'選項所有-Indexes'沒在很少的答案中工作! – Fr0zenFyr 2017-06-02 08:30:50

+0

@ Fr0zenFyr它取決於網絡服務器配置,如果'AllowOverride All',作品 – 2017-06-04 12:27:38

回答

65

選項-Indexes應該能夠防止目錄列表。

如果您使用.htaccess文件,請確保您的主apache config file中至少有「allowoverride選項」設置。

+0

這並沒有改變任何東西 – minhajul 2015-09-20 02:41:15

30

嘗試將其添加到該目錄中的.htaccess文件中。

Options -Indexes 

This有更多信息。

+0

我已經過測試,但不幸的是不起作用。 – 2011-05-09 05:24:14

+0

是的,我認爲 - 索引禁用的目錄列表,而是阻止文件夾中的所有內容...有誰知道爲什麼? – 2015-03-05 16:04:34

+0

我所能想到的是服務器配置存在一些問題。嘗試啓用'rewrite'模塊,並將目錄設置爲'AllowOverride All'。如果所有這些都已經存在,並且您所評論的內容是真實的,那麼我必須非常幸運地得到'Options All -Indexes'才能在不同服務器上的每個項目中工作。 – Fr0zenFyr 2017-06-02 08:37:46

31

如果Options -Indexes不像布賴恩德魯裏建議的那樣工作,您可以編寫一個遞歸方法來創建空白index.php文件。

將你想保護你的基地文件夾的這裏面,你可以命名爲任何(我推薦的index.php)

<?php 

recurse("."); 

function recurse($path){ 
    foreach(scandir($path) as $o){ 
     if($o != "." && $o != ".."){ 
      $full = $path . "/" . $o; 
      if(is_dir($full)){ 
       if(!file_exists($full . "/index.php")){ 
        file_put_contents($full . "/index.php", ""); 
       } 
       recurse($full); 
      } 
     } 
    } 
} 

?> 

這些空白的index.php文件,可以很容易地刪除或覆蓋,他們會讓你的目錄不能被列出。

+7

雖然空文件並不是什麼大事,但更好的解決方案可能是使用[符號鏈接](http://php.net/manual/en/function.symlink.php),它可以節省一點空間,如果他選擇顯示某種統一的信息而不是空白頁面,他只需要修改1個文件。 – daalbert 2011-05-17 19:39:53

+0

@daalbert「這樣可以節省一點空間」 - 你是系統管理員嗎?系統管理員邏輯:您剛剛保存了2Kb * 1000個文件夾= 2Mb;當你至少有50GB空閒時,你抱怨幾Mb?他的解決方案很糟糕,但你的答案甚至是笨拙的... – HellBaby 2017-03-02 08:48:24

+0

我不明白爲什麼'選項所有-Indexes'不起作用! – Fr0zenFyr 2017-06-02 08:31:00

8

對於展示紫禁城錯誤,那麼在您的.htaccess文件這些行:

Options -Indexes 

如果我們希望我們的索引文件,並顯示出一些信息他們,然後用:

IndexOptions -FancyIndexing 

如果我們想爲某些特定的分機不顯示,那麼:

IndexIgnore *.zip *.css 
+0

'.httaccess'或'.htaccess'? – NaveenDA 2017-07-29 04:47:53

1
Options -Indexes 

我必須嘗試創建.htaccess文件,即我想要禁止目錄索引列表的當前目錄。但是,對不起,我不知道在.htaccess代碼中遞歸。

試試吧。

0

同意,

Options -Indexes 

如果主服務器被配置爲允許選擇覆蓋應該工作,但如果沒有,這會從列表隱藏所有文件(這樣每個目錄顯示爲空):

​​
0

選項-Indexes爲受保護的目錄返回403禁止的錯誤。同樣的行爲可以通過在htaccess的使用下面的重定向被achived:

RedirectMatch 403 ^/folder/?$ 

這將返回一個禁止錯誤example.com/folder/

您還可以使用mod-rewrite禁止對文件夾的請求。

RewriteEngine on 

RewriteRule ^folder/?$ - [F] 

如果你的htaccess的是,你要保佑,從^文件夾/?$^$改變重寫規則的圖案的文件夾中。

0

有兩種方式:

  1. 使用的.htaccess:Options -Indexes

  2. 創建空白的index.html