2017-01-23 59 views
1

我想完全拒絕某些IP訪問我的網站。 此外,我想拒絕其他一些IP只能訪問某個文件。 問題是,第二條規則似乎覆蓋了第一條。在htaccess中合併多個FilesMatch規則

<FilesMatch ""> 
order allow,deny 
allow from all 
deny from 1.1.1.1 
</FilesMatch> 

<FilesMatch "^file\.exe$"> 
order allow,deny 
allow from all 
deny from 2.2.2.2 
</FilesMatch> 

在這個精簡的例子中,1.1.1.1將有權訪問file.exe,但它實際上被第一條規則阻止。

預期結果:1.1.1.1無法訪問任何內容(包括file.exe),2.2.2.2有權訪問網站但不訪問file.exe。

我在做什麼錯?

回答

0

deny from 1.1.1.1加到第二個。正如你所說,第二個區塊中的allow from all正在覆蓋第一個區塊file.exe。還要刪除第一個空文件匹配,它沒有做任何事情。

order allow,deny 
allow from all 
deny from 1.1.1.1 

<FilesMatch "^file\.exe$"> 
order allow,deny 
allow from all 
deny from 1.1.1.1 
deny from 2.2.2.2 
</FilesMatch> 

或者一個簡單的方法,你可以試試這個:

order allow,deny 
allow from all 
deny from 1.1.1.1 

<FilesMatch "^file\.exe$"> 
deny from 2.2.2.2 
</FilesMatch> 

請讓我知道你上車。

+0

好吧,我也有這個想法,但1.1.1.1只是一個簡短的例子。實際上,有大約20行+評論的生活清單。我絕對不想在這裏創建需要保持同步的冗餘。你的第二個例子也可能缺少你的建議線。除了忽略FilesMatch範圍外,似乎會干擾htaccess文件的其餘部分。而不是403我得到ERR_TOO_MANY_REDIRECTS。但是,這只是一個側面節點,指出空白FilesMatch確實有意義。 – CodeX

+0

重定向問題是由於'ErrorDocument 403 /' - 我爲了測試的目的而刪除了這個問題,如果我能得到您的建議,我會找到另一個解決方案。第二個建議的問題是,它似乎隱式地覆蓋了allow語句,因此可以從1.1.1.1訪問file.exe - 您可以用127.0.0.1或:: 1替換它,以便在本地輕鬆嘗試本地,如果您喜歡。 – CodeX