.htaccess redirect para todos os IPs, exceto o meu

Basicamente, estou tentando trabalhar no front-end de um site, mas gostaria que todos, exceto eu, fossem redirecionados para uma página de construção, se quiserem. Atualmente tenho:

redirect 301 /index.php http://www.domain.com/construction.php 

Enquanto isso funciona, funciona bem, eu gostaria de poder ainda ver o site ao vivo, é possível excluir todos, mas o meu IP?

Obrigado novamente.

Você poderia fazer isso com mod_rewrite

 Options +FollowSymlinks RewriteEngine on RewriteCond %{REMOTE_ADDR} !=123.45.67.89 RewriteRule index.php$ /construction.php [R=301,L] 

Você precisará de algumas condições antes de redirect:

 RewriteCond %{REMOTE_ADDR} !=1.3.3.7 RewriteCond %{REQUEST_URI} !=/construction.php RewriteRule .* /construction.php [L] 

Além disso, para garantir que após a remoção do bloqueio, os clientes verão a página real, essa solução não redirectá os clientes permanentemente (usando um redirecionamento 301), mas redirectá internamente. Substitua 1.3.3.7 pelo endereço IP real que você está usando.

Olá, você poderia fazer o seguinte no arquivo .htaccess

 RewriteEngine on # Redirect all except allowed IP RewriteCond %{REMOTE_ADDR} !^12.345\.678\.901$ RewriteRule /index.php http://www.domain.com/construction.php [R=302,L] 

colocando o seu IP em vez de 12.345.678.901

Se a sua versão do apache for 2.4 *, você poderá redirect seus visitantes para a página de construção usando as seguintes diretivas no htaccess:

  RedirectMatch ^/((?!construction.php).*)$ /construction.php  

Ele diz que se o endereço IP não redireciona todas as solicitações para /construction.php .

Em versões mais antigas do apache, você pode usar a seguinte solução baseada em mod-rewrite:

 RewriteEngine on RewriteCond %{REMOTE_ADDR} !^myIP$ RewriteRule !construction\.php /construction.php [L] 

Isso internamente especifica o pedido para /construction.php se o RewriteCondition for atendido. Você pode replace L por R se quiser ver o URL redirecionado na barra de endereço do navegador.

O seguinte funcionou para mim

 Deny from all Allow from xxx.xxx.xx.xxx 

Se você tiver um intervalo de IPs que deseja excluir da página “em construção”, poderá usar |

 RewriteEngine on RewriteCond %{REMOTE_ADDR} !^127.0.0.1|212.250.141.228 RewriteRule ! construction\.html /construction.html [R] 

É importante colocar as duas últimas linhas no final do seu arquivo .htaccess , especialmente quando ele contém mais regras de reescrita.

Além de usar a diretiva if como outras respostas sugeridas, você também pode adicionar vários IPs incluindo outras condições em uma diretiva usando o operador && como tal:

  RedirectMatch ^/((?!construction.php).*)$ /construction.php  

Veja os documentos aqui: http://httpd.apache.org/docs/2.4/mod/core.html#if