2012-01-24 28 views
24

Básicamente, estoy tratando de trabajar en la parte frontal de un sitio web, pero me gustaría que todos los demás, excepto yo, sean redireccionados a una página de construcción si lo desea. Actualmente tengo:.htaccess redirigir a todas las direcciones IP, pero la mía

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

Aunque esto funciona, funciona para así, me gustaría ser capaz de seguir viendo el sitio en vivo a mí mismo, ¿es posible excluir todos, pero mi IP?

Gracias de nuevo.

Respuesta

53

Se podía hacerlo con mod_rewrite

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

me gano por 30 segundos :-) –

+1

¿Qué tal agregar IP, como una lista de direcciones IP? – BenRacicot

+0

@BenRacicot: Pruebe algo como esto: http://stackoverflow.com/questions/11653461/redirect-a-range-of-ips-using-rewritecond – kufi

3

hola allí se podría hacer lo siguiente en el archivo .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] 

poner su IP en lugar de 12.345.678.901

23

podrás necesita algunas condiciones antes de redireccionar:

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

Además, para asegurarse de que después de que se elimine el bloqueo, los clientes vean la página real, esta solución no redirecciona a los clientes de forma permanente (utilizando un redireccionamiento 301), sino que internamente redirige. Sustituya 1.3.3.7 por la dirección IP real que está utilizando.

1

Los siguientes trabajó para mí

Deny from all 
Allow from xxx.xxx.xx.xxx 
+0

Esto solo deniega el acceso, no redirecciona al cliente como lo solicitó el usuario. – jdgregson

3

Si su versión de Apache es 2.4 *, se pueden redirigir las visiters a la página de la construcción usando las siguientes directivas de .htaccess:

<If "%{REMOTE_ADDR} !='yourIp'"> 
RedirectMatch ^/((?!construction.php).*)$ /construction.php 
</If> 

que dice si el dirección IP no es yourIp redirigir todas las solicitudes a /construction.php.

En las versiones anteriores de Apache, puede utilizar la siguiente solución basada mod-rewrite:

RewriteEngine on 

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

Este forwords internamente la solicitud de /construction.php si el RewriteCondition cumple. Puede reemplazar L con R si desea ver la URL redirigida en la barra de direcciones del navegador.

+1

Eres el hombre :) La única solución que funcionó. –

0

Si usted tiene un rango de direcciones IP que desea excluir de ver la página 'en construcción' se puede utilizar |

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

Es importante poner las 2 últimas líneas al final de su archivo .htaccess, especialmente cuando contiene más reglas de reescritura.

0

Además de utilizar el if Directiva como otras respuestas sugeridas, también se puede añadir varias direcciones IP mediante la inclusión de otras condiciones en una sola directiva usando el operador && como tal:

<If "%{REMOTE_ADDR} != '127.0.0.1' && %{REMOTE_ADDR} != '192.168.1.1'"> 
    RedirectMatch ^/((?!construction.php).*)$ /construction.php 
</If> 

Consulte la documentación aquí: http://httpd.apache.org/docs/2.4/mod/core.html#if

Cuestiones relacionadas