2015-04-02 25 views
0

我在做什麼的簡短說明是:我需要爲我的機器上的每個IP地址自動創建虛擬主機,使其指向vsftpd用戶目錄(/ home/xxx),並拒絕執行任何類型的腳本。如何在<VirtualHost>或httpd.conf文件中添加.htaccess規則

我想停止任何類型的網頁,特別是PHP腳本被執行,因爲它會帶來巨大的安全風險(Apache是​​sudo)。這個虛擬主機的目的純粹是爲了提供遊戲資源文件,擴展名如.wav,.mdl,.tga,.spr等等。

我找遍四周,發現這

deny from all 
<filesmatch "\.(avi¦wmv¦mpg¦mov)$"> 
Allow from all 
</filesmatch> 

但這是的.htaccess內容。我怎樣才能實現這個功能,只允許我的httpd.conf文件中的某些擴展?讓它使用.htaccess是一種痛苦,因爲用戶可能會對它們進行編輯,這是一種風險。

請避免與我的問題無關的任何評論,例如「sudo apache?你是個笨蛋」等等。

回答

3

沒有隻有.htaccess的內容。這是一個巨大的誤解。大多數時候你做不是想要使用.htaccess和Apache建議你不要使用它,除非必要。 Apache規則總是可以放在服務器配置中。

When not to use .htaccess

現在,你可以把你的虛擬主機的指令。與您的文檔根目錄相同的位置。

FilesMatch指令可以在這些上下文中使用。

上下文:服務器配置,虛擬主機,目錄,.htaccess

http://httpd.apache.org/docs/current/mod/core.html#filesmatch

因此,在你的虛擬主機文件,你可以添加目錄指令像這樣的例子。

<Directory /path/to/documentroot/> 
    Deny from all 
    <FilesMatch "\.(avi|wmv|mpg|mov)$"> 
    Allow from all 
    </FilesMatch> 
</Directory> 

如果您正在使用Apache 2.4,那麼你需要使用Require

<Directory /path/to/documentroot/> 
    Require all denied 
    <FilesMatch "\.(avi|wmv|mpg|mov)$"> 
    Require all granted 
    </FilesMatch> 
</Directory> 
+0

感謝您的回覆,@ panama-jack。關於目錄,我使用var/www作爲主站的主機。如果我有40個其他虛擬主機,所有在/ home /中,我只能爲/ home /創建一個規則,還是需要爲在vhost中指定的每個文檔根添加一個條目,例如/ home/user/web 。這個規則也適用於每個子文件夾嗎?編輯::測試,它只適用於/ home /的一個規則,如果您有任何要添加的東西,請這樣做。再次感謝你 – aron9forever 2015-04-02 18:23:18

+0

如果你發現你使用父目錄'/ home /',它應該可以工作。所以,如果這符合你的要求,那麼你應該很好去。 :)沒有更多的添加,如果它爲你工作。我希望答案能幫助你。 – 2015-04-02 18:33:30