我该如何密码提示某些IP,并允许所有其他人使用Apache免费访问?

解决:这个想法是,如果访问者来自中国,他们必须通过基本的authentication。 如果您有任何其他IP地址,您可以访问该网站,而不会受到麻烦(包括代理)

//1400 rules.... SetEnvIf Remote_Addr 222.249.128.0/19 china SetEnvIf Remote_Addr 222.249.160.0/20 china SetEnvIf Remote_Addr 222.249.176.0/20 china AuthType Basic AuthName "Restricted" AuthUserFile /www/passwd/users Require valid-user Order allow,deny Allow from All Deny from env=china Satisfy any 

只需添加“允许从myiprange”或“允许myinternalnetwork.com”。 “满足任何”将需要一个有效的用户或允许。

请参阅: 身份validation,授权和访问控制

一般来说,默认configuration对每个人都有不受限制的访问权限

 <Directory "/home/web/htdocs"> Order allow,deny Allow from all </Directory> 

然后,您必须通过拒绝所有的限制区域来强制进行身份validation,然后只允许这些子网,然后再对他们如何进行身份validation提出任何要求。 满足所有用于确保访问的两个政策是必需的。

 <Directory "/home/web/htdocs/restricted"> Order Deny,Allow Deny from all Allow from 58.240.0.0/15 Allow from 58.242.0.0/15 Require valid-user Satisfy all AuthName "Restricted Area" AuthType Basic AuthUserFile /home/web/.htpasswds/.htpasswd Require valid-user </Directory> 

警告!

每一次我想我都明白身份authentication的规则,我必须反复configuration这个configuration,直到我得到一些细微差别为止。 仅以此为起点。 重新阅读mod_auth和mod_access上的apache文档,特别注意Order指令。 这就是你的答案。

希望这有帮助,并请张贴你的工作示例,如果它不符合这个,因为这是一个相当不错的食谱,在一个Apache的食谱。

– 编辑 –

testing以上内容显示,除了来自IP地址的用户必须提供身份validation外,禁止所有的受限区域。

从你的问题来看,从其他知识产权的用户是否需要不受限制地访问这个“限制区域”,还是仅仅被禁止?

这是我使用的代码,允许所有用户,否认中国和密码提示那些:

 AuthType Basic AuthName "Restricted" AuthUserFile /home/.htpasswds/.htpasswd Require valid-user Order Allow,Deny Allow from all deny from 58.14.0.0/15 .... deny from 222.249.192.0/18 satisfy any