我在我的根目錄中有一個我不想知道的文件夾。即使有人輸入正確,我想扔404找不到。在現有的文件夾/目錄上寫上404
這可能可以用mod-rewrite來做嗎?
我現在根本不能存儲它,不要問爲什麼
謝謝!
我在我的根目錄中有一個我不想知道的文件夾。即使有人輸入正確,我想扔404找不到。在現有的文件夾/目錄上寫上404
這可能可以用mod-rewrite來做嗎?
我現在根本不能存儲它,不要問爲什麼
謝謝!
拋出403是不是問題?如果您有shell訪問權限,您可以chmod該目錄,以便Web用戶無法讀取或統計它。
至少,拋出404不是正確的HTTP狀態。 204無內容,301重定向,401未經授權通過添加安全性,或403 Forbidden是好的。 – Jordan 2010-07-17 21:05:25
誠然,雖然RFC 2616確實會說「當服務器不希望準確揭示請求被拒絕的原因時,通常使用此狀態代碼。」這是一種隱含的認可(或至少是承認)使用404「假裝」現有文件不存在而不揭示原因的做法。 – 2010-07-18 03:35:50
我沒有嘗試這個,但我想你可以重定向到不存在的東西。
創建一個自定義404頁面,然後將mod_rewrite設置爲重寫請求到違規目錄到自定義404文件。無論如何,定製404頁面通常都是很好的做法,所以通過這樣做你可以得到兩個價格。
我首先建議將文件移出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]
重寫在計算上更昂貴,但它可能是你唯一的選擇,如果你沒有訪問主服務器配置。
爲了讓'RewriteRule'更有效一些,你可以避免重寫,並且執行'RewriteRule ^/nameoffile - [R = 404]'來立即在匹配中拋出404狀態。它有點混雜R標誌的語義,但是mod_rewrite認爲它完全可以接受。 – 2010-07-17 23:52:53
也許一個愚蠢的問題:如果你永遠不會將這些文件提供給Web瀏覽器,爲什麼不把它們移到Web根目錄之外? – grossvogel 2010-07-17 20:52:36
我與grossvogel,我問爲什麼。我想不出任何原因,您可能不得不無法將文件移出文檔根目錄。 – 2010-07-17 20:54:05
看到[這個問題](http://stackoverflow.com/questions/214886/how-do-i-hide-directories-in-apache-specifically-source-control) – Gilles 2010-07-17 21:01:08