如何通过.htaccess将所有用户重定向到维护页面,除了某些IPS

时间:2018-03-16 07:10:41

标签: .htaccess

我是.htaccess的新手,根据我的需要无法在.htaccess中写条件。我尝试了许多其他用户共享的类似解决方案,但问题仍未解决。所以这就是我在这里单独提出问题的原因。

我有一个网站,但几天后,它正处于维护模式。为此,我在根目录中创建了maintainence.php文件。因此,如果任何用户点击此域下的任何URL,那么他们将获得在maintainence.php文件中写入的消息。

但我想允许一些IP访问整个网站,域名下的任何网址。我正在尝试使用.htaccess做这件事。我认为使用.htaccess文件执行此操作是最好的方法。

我试过的内容如下:

<IfModule mod_rewrite.c>
   Options +FollowSymlinks
   RewriteEngine on
   RewriteCond %{REMOTE_ADDR} ^xxx\.xx\.xx\.xx$ #this is IP that I want to allow
   RewriteCond %{REQUEST_URI} !=/maintainence.php
   RewriteRule ^(/.*)?$ /maintainence.php [R=301,L]
</IfModule>  

上述解决方案是将所有人重定向到maintainence.php,包括提到的IP。

有人可以帮我吗?提前致谢

1 个答案:

答案 0 :(得分:0)

你几乎否认IP不允许它,所以如果你想允许一些IP并阻止其他人修改你的代码:

 <IfModule mod_rewrite.c>
 Options +FollowSymlinks
 RewriteEngine on
 RewriteCond %{REMOTE_ADDR} !^xxx\.xx\.xx\.xx [OR]
 RewriteCond %{REMOTE_ADDR} !^xxx\.xx\.xx\.xx [OR]
 RewriteCond %{REMOTE_ADDR} !^xxx\.xx\.xx\.xx 
 # i just excluded three but you could do less or more 
 RewriteCond %{REQUEST_URI} !=/maintainence.php
 RewriteRule ^(.*)$ /maintainence.php [R=301,L]
</IfModule> 

注意:清除浏览器缓存测试。