2009-10-12 38 views
1

我需要通过IP地址阻止对我的整个站点的访问,除了应该向所有人开放的url/api。我目前使用在IP上的IP阻止URL

...

<LocationMatch /admin> 
    Order Deny,Allow 
    Deny from all 
    Allow from [MY IP] 
</LocationMatch> 

这将阻止访问以/管理员的网址。但是我想阻止所有除start/api之外的url。

克里斯

回答

0

那么你可以先封锁整个网站,然后简单地允许/ API。

<LocationMatch /> 
    Order Deny,Allow 
    Deny from all 
    Allow from [MY IP] 
</LocationMatch> 

<LocationMatch /api> 
    Order Deny,Allow 
    Allow from all 
</LocationMatch> 

对不起,由于XAMPP配置在我的电脑上,我无法测试它。祈祷它有效。

+0

感谢但这并没有工作,它阻止了一切。 – 2009-10-12 15:15:34

+0

您是否尝试切换规则的顺序? – deizel 2009-10-12 17:28:46

2
RewriteEngine On # (only needs to happen once in .htaccess files. 

RewriteBase/
RewriteCond %{REMOTE_ADDR} !^10\.103\.18\.104  # <--YOUR IP HERE 
RewriteCond %{REQUEST_URI} !^/api # page or directory to ignore     
RewriteRule ^(.*)$ http://example.com/no_access.html [R=401] # where to send blocked requests 
+0

不能得到这个工作。我得到一个错误401身份验证要求。 – 2009-10-12 15:13:11

+0

重写需要使用附加模块。仍然会更好地使用核心。 – mauris 2009-10-13 09:09:28

+0

@Chris - 如果您的IP不匹配,我提供的代码将返回401到浏览器。 @Mauris - 的确如此。但并非所有用户都可以访问核心配置文件。并重写目录级别的作品 妥协? 使用位置锁定整个站点(用'/'替换'/ admin') 使用附加位置块解锁/ api(反向拒绝,允许全部) – Eddie 2009-10-20 12:20:47