2016-06-07 90 views
0

基本上我試圖阻止目錄列表,除非允許IP但允許直接訪問IP以外的任何文件?.htaccess IP限制目錄和直接文件訪問沒有限制

所以在我的.htaccess到目前爲止,我有:

allow from all 
Options -Indexes 

<Files *> 
    deny from all 

    # External 
    allow from XXX.XXX.XXX.XXX 

    # Internal 
    allow from XX.XX.XX. 

    Options +Indexes 
    DirectoryIndex README.html 
</Files> 

這讓我列出我們的網絡中的目錄和文件的訪問,限制我們的網絡外部訪問,但是這也可以防止對文件外直接訪問我們的網絡。我希望能夠訪問網絡外的文件,但不允許目錄列表。

謝謝。


編輯

我發現這個https://serverfault.com/a/531674這有可能幫助,但我們有一個IP範圍,這個選項只允許一個IP等於。

回答

0

從您的編輯提供的鏈接你可以寫這樣的事:

# considering your ip range is 150.150.150.xxx 
options -Indexes 
<If "%{REMOTE_ADDR} =~ /150\.150\.150\.[0-9]+/"> 
    options +Indexes 
</If> 

編輯多個IP範圍:

# considering you have two ip ranges 150.150.150.xxx and 250.250.250.xxx 
options -Indexes 
<If "%{REMOTE_ADDR} =~ /150\.150\.150\.[0-9]+/ || %{REMOTE_ADDR} =~ /250\.250\.250\.[0-9]+/"> 
    options +Indexes 
</If> 

你也可以做OR條件在你的正則表達式中:

# considering you have two ip ranges 150.150.150.xxx and 250.250.250.xxx 
options -Indexes 
<If "%{REMOTE_ADDR} =~ /(150\.150\.150\.[0-9]+)|(250\.250\.250\.[0-9]+)/"> 
    options +Indexes 
</If> 

測試並使用Apache> = 2.4

+0

真棒謝謝你!是否有可能在IF內做一個OR條件,或者我需要做一些事情:/(150\.150\.150 \。[0-9] +)|(123 \ .123 \ .123 \。[ 0-9] +)+/ –

+0

我用這些信息編輯了我的答案;)。 –

+0

這是現貨,按預期工作!非常感謝 –