2014-02-21 66 views
0

第一篇文章由初學者。htaccess:阻止特定的IP,然後只允許部分站點訪問

我管理一個網站,我有禁止的IP地址列表,像這樣:

order allow,deny 
deny from xxx.xxx.xxx.xxx 
deny from yyy.yyy.yyy.yyy 
etc... 
allow from all 

到目前爲止好。

現在,已經決定只有一些特定的文件&文件夾應該是公開的, 和其餘所有應該是私人的。

我所做的是:在被取締的IP地址列表的底部,我添加了這 爲了阻止一切:

Order allow,deny 
deny from All 

然後,爲了讓查看在我增加了公衆的東西:

<FilesMatch foo.html> 
order deny,allow 
</FilesMatch> 
<FilesMatch bar.jpg> 
order deny,allow 
</FilesMatch> 

而且,這需要公共訪問的文件夾裏面,我加了一個特定htacces這樣的:

satisfy any 
Order allow,deny 
Allow from all 

但現在的問題是,由根htacces禁止的IP可以訪問這些公共文件 ,而我們希望他們禁止一切。

我意識到我很想念...請和我一起裸照! 請問有人能賜教嗎? 提前謝謝!

回答

0

結合IP特定的DenyDeny from all沒有任何意義 - 後者包含每一個已經具體的。

您必須爲您的非公開文件和文件夾專門設置Deny from all

+0

感謝您的回答。但我仍然有關於公共文件(上面引用的foo.html&bar.jpg)的問題,我希望這些文件是公開的但不能被禁止的IP訪問。現在,它們可以被禁止的IP訪問。 – user3323385

+0

這是因爲您使用了錯誤的['order'](http://httpd.apache.org/docs/2.2/en/mod/mod_authz_host.html#order):_「'Deny,Allow':首先,全部拒絕指令被評估;如果有任何匹配,請求將被拒絕,除非它也與Allow指令相匹配。「_ - 所以你的IP拒絕是被評估的,但是在那之後'允許所有'說,_」啊,沒關係 - 反正進來...「_ – CBroe

+0

好吧,但單個文件沒有'全部允許',它們只有' 命令拒絕,允許 ' – user3323385

0

這可能會更容易使用mod_rewrite規則。考慮這個代碼:

RewriteEngine On 

# ban all the IP addresses you want here 
RewriteCond %{REMOTE_ADDR} ^(xxx\.xxx\.xxx\.xxx|yyy\.yyy\.yyy\.yyy)$ 
RewriteRule^- [F,L] 

# ban all except few allowed files/folders here 
RewriteCond %{REQUEST_URI} !/(foo\.html|bar\.jpg|folder1/|folder2/) [NC] 
RewriteRule^- [F,L] 

這應該放在根.htaccess中,並確保從子文件夾中刪除所有其他.htaccess。

相關問題