2010-07-17 74 views
2

我在我的根目錄中有一個我不想知道的文件夾。即使有人輸入正確,我想扔404找不到。在現有的文件夾/目錄上寫上404

這可能可以用mod-rewrite來做嗎?

我現在根本不能存儲它,不要問爲什麼

謝謝!

+2

也許一個愚蠢的問題:如果你永遠不會將這些文件提供給Web瀏覽器,爲什麼不把它們移到Web根目錄之外? – grossvogel 2010-07-17 20:52:36

+0

我與grossvogel,我問爲什麼。我想不出任何原因,您可能不得不無法將文件移出文檔根目錄。 – 2010-07-17 20:54:05

+1

看到[這個問題](http://stackoverflow.com/questions/214886/how-do-i-hide-directories-in-apache-specifically-source-control) – Gilles 2010-07-17 21:01:08

回答

1

拋出403是不是問題?如果您有shell訪問權限,您可以chmod該目錄,以便Web用戶無法讀取或統計它。

+0

至少,拋出404不是正確的HTTP狀態。 204無內容,301重定向,401未經授權通過添加安全性,或403 Forbidden是好的。 – Jordan 2010-07-17 21:05:25

+3

誠然,雖然RFC 2616確實會說「當服務器不希望準確揭示請求被拒絕的原因時,通常使用此狀態代碼。」這是一種隱含的認可(或至少是承認)使用404「假裝」現有文件不存在而不揭示原因的做法。 – 2010-07-18 03:35:50

-1

我沒有嘗試這個,但我想你可以重定向到不存在的東西。

0

創建一個自定義404頁面,然後將mod_rewrite設置爲重寫請求到違規目錄到自定義404文件。無論如何,定製404頁面通常都是很好的做法,所以通過這樣做你可以得到兩個價格。

0

我首先建議將文件移出web根目錄,除非你有一個真的很好理由不(因爲我不會輕易相信你這樣做)。

如果您打算不這麼做,請使用Tristan對403錯誤的建議。像

<Files /path/to/docroot/nameoffile> 
    Order allow,deny 
    Deny from all 
</Files> 

如果你在沒有做真正意圖的東西,你應該能夠使用的別名URL重定向到一個不存在的位置:

Alias /nameoffile /path/that/doesnt/exist 

同樣可以用做mod_rewrite的,

RewriteRule /nameoffile /path/that/doesnt/exist [L] 

重寫在計算上更昂貴,但它可能是你唯一的選擇,如果你沒有訪問主服務器配置。

+1

爲了讓'RewriteRule'更有效一些,你可以避免重寫,並且執行'RewriteRule ^/nameoffile - [R = 404]'來立即在匹配中拋出404狀態。它有點混雜R標誌的語義,但是mod_rewrite認爲它完全可以接受。 – 2010-07-17 23:52:53

相關問題