使用htaccess阻止访问除我的IP地址之外的一系列URL

时间:2014-04-29 23:45:23

标签: .htaccess url ip maintenance maintenance-mode

除了我的IP地址外,我怎么能阻止范围或URL。

所以......

允许所有用户http://mydomain.com/ *

阻止http://mydomain.com/thisdirectoryandallcontents/ *除了我的IP之外的所有

我发现another site的一些代码可能有效,但我没有htaccess技能来适应它

Options +FollowSymlinks
RewriteEngine on

#urls to exclude
RewriteCond %{REQUEST_URI} !/url-to-exclude-1$
RewriteCond %{REQUEST_URI} !/url-to-exclude-2$
RewriteCond %{REQUEST_URI} !^/images$
RewriteCond %{REQUEST_URI} !^/css$
RewriteCond %{REQUEST_URI} !^/$

#ip to allow access
RewriteCond %{REMOTE_HOST} !^11\.11\.11\.11$

#send to root
RewriteRule .? /http://www.mydomain.com [R=302,L]

1 个答案:

答案 0 :(得分:3)

我有类似的要求,当我将我的页面(或部分)放在维护上时,基本相同。 htaccess文件的内容如下所示:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} /thisdirectoryandallcontents
RewriteCond %{REMOTE_ADDR} !=111.111.111.111
RewriteRule ^.*$ /maintenance.php [R=302,L]

我将根据您的要求逐步解释:

  1. 每个用户都应该能够访问主页http://mydomain.com/ - 很酷,无需配置。
  2. 如果请求位于文件夹/ thisdirectoryandallcontents中,则第一个RewriteCond检查。
  3. 第二个RewriteCond检查,如果IP地址是其他任何一个,那么111.111.111.111(这里你必须写你的IP地址)。
  4. 如果两个条件都适用,我们会将用户重定向到/maintenance.php。在这里,我通常向用户输出一条消息,该页面当前正在维护中。您可以显示一条消息,即用户无权访问/ thisdirectoryandallcontents。 如果您愿意,也可以将用户重定向到维护页面,而不是将用户重定向到主页。