2008-11-16 21 views
12

Básicamente estoy a punto de comenzar a trabajar en un sitio y me gustaría algo que pueda agregar a mi archivo .htaccess (o en otro lugar) que funcione como este pseudo código: (mi IP estará en su lugar de 127.0.0.1)Quiero redirigir a todos los visitantes excepto a mí

if (visitors_ip <> 127.0.0.1) 
    redirectmatch ^(.*)$ http://www.example.com/under-construction.html 

Esperemos que tenga sentido ...

Respuesta

20

eso sería something like:

RewriteEngine On 
RewriteBase/
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1 

RewriteCond %{REQUEST_URI} !/mypage\.html$ 

RewriteRule .* http://www.anothersite.com/mypage.html [R=302,L] 

Como Andrew señala, el% { SOLICITUD_ La condición URI} evita el bucle infinito si redirige al mismo dominio.

Como Xorax comentarios almost 9 years later:

No use REMOTE_HOST, se producirá un error en muchos casos. Debe usar REMOTE_ADDR.
Cf "difference between REMOTE_HOST and REMOTE_ADDR"

+0

Ahora que IPv6 está en la imagen, estoy descubriendo que hay casos en que la dirección IP del host local aparece como :: 1, no siempre 127.0.0.1 - no estoy seguro de cuándo y por qué, pero para manejar eso creo necesita una condición adicional: 'RewriteCond% {REMOTE_HOST}!^:: 1' Los dos puntos no deberían requerir escapes, no caracteres especiales para la regex del motor de reescritura, no lo creo. –

+0

No debe usar REMOTE_HOST, fallará en muchos casos. Deberías usar REMOTE_ADDR. https://stackoverflow.com/questions/3812166/difference-between-remote-host-and-remote-addr – Xorax

+0

@Xorax Gracias. He modificado mi respuesta de 9 años. – VonC

0

que tener cuidado con este enfoque.

Me he quemado al tomar el enfoque basado en IP para limitar el acceso, y luego perder el contrato de mi dirección IP.

Por supuesto, siempre puede entrar en la caja en cuestión y cambiar el archivo .htaccess nuevamente, pero los 5 minutos de pánico mientras intenta descubrir lo que acaba de pasar no son exactamente divertidos si no lo está esperando suceder

Recomiendo usar el .htaccess (junto con un archivo htpasswd) para solicitar credenciales para acceder a su sitio de desarrollo.

Un buen ejemplo de esto es aquí: http://aplawrence.com/foo-web/htaccess-authentication.html

+0

Gracias, buen punto, pero no voy a mantener esta alineación por más de una semana o dos. –

+0

Dependiendo de cómo esté configurada su red, sus tiempos de arrendamiento pueden ser mucho más cortos que eso. –

3

Aquí está la solución que terminé usando, tenga en cuenta que es similar a VonC de la excepción de que su causado un bucle infinito si se eligió para redirigir al mismo dominio.

RewriteEngine On 
RewriteBase/
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1 
RewriteCond %{REQUEST_URI} !/coming-soon\.html$ 
RewriteRule .* http://www.andrewgjohnson.com/coming-soon.html [R=302,L] 

También hay que señalar que 302 es una medida temporal y se debe utilizar en lugar de la nada o 301.

+0

Acabo de agregar su condición de reescritura adicional en mi respuesta, para ser minucioso. – VonC

2
<IfModule mod_rewrite.c> 
RewriteEngine On 
# Redirect all except allowed IP 
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.001$ 
RewriteCond %{REMOTE_ADDR} !000\.000\.000\.002$ 
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.003$ 
RewriteRule (.*) http://YourOtherWebsite.com/$1 [R=301,L] 
</IfModule> 

antes de wordpress IfModule Esto redireccionará todos, excepto la dirección IP en 3 pregunta.

Simplemente ftp al sitio y edite el archivo .htaccess si su dirección IP cambia.

Cuestiones relacionadas