2011-12-31 29 views
9

Quiero que mis visitantes tengan acceso solo a una parte específica de mi sitio web (blog). Si intentan acceder a otras áreas del sitio web, me gustaría que se redireccionen a la sección del blog..htaccess mod_rewrite Redirección basada en IP: ¿cómo redirigir todo el tráfico a un subdirectorio específico, excepto mi IP?

También quieren que esto se aplica a todos, excepto a mi dirección IP.

Así que la estructura es la siguiente:

mysite.com/blog // visitor access allowed

mysite.com  // redirect to mysite.com/blog 

mysite.com/forum // redirect to mysite.com/blog 

mysite.com/tools // redirect to mysite.com/blog 

etc... 

¿Tiene alguna sugerencia sobre cómo hacer esto a través de mod_rewrite de .htaccess?

Respuesta

18

Usted debe ser capaz de redirigir con lo siguiente:

RewriteCond %{REMOTE_HOST} !^123\.456\.789 
RewriteCond %{REQUEST_URI} !^/blog/? 
RewriteCond %{REQUEST_URI} /(.*)$ 
RewriteRule (.*) /blog [R=301,L] 
+0

gracias @jordon - si quiero agregar más de una dirección IP, ¿cuál sería la sintaxis? – pepe

+5

@torr Simplemente copie la primera línea en otra línea y continúe agregando. –

+0

Creo que REMOTE_ADDR es preferible a REMOTE_HOST para obtener la dirección IP. REMOTE_HOST no devolverá necesariamente la dirección IP si 'HostnameLookups' está habilitado (aunque esto está desactivado por defecto). – MrWhite

3

Debe crear una página que maneja las redirecciones específicos, y luego editar el archivo .htaccess para ser algo como esto:

Options +FollowSymlinks 
RewriteEngine on 
#not your IP 
RewriteCond %{REMOTE_HOST} !^123\.123\.123\.123 
#make sure the rule allows everyone to access the redirect page 
RewriteCond %{REQUEST_URI} !/redirect_page\.html$ 
#Send them to the redirect page 
RewriteRule \.html$ /redirect_page.html [R=302,L] 

El rediret_page.html puede tener js o una redirección del lado del servidor que maneja dónde terminan, pero forzará a todos los que no hayan ingresado a su dirección IP a través de una página específica que maneja la redirección.

+0

para aclarar, no quiero que mis usuarios redireccionen una página. Quiero que vayan a la página principal de mi blog (wordpress), que generalmente muestra si apunto manualmente el navegador a 'mysite.com/blog' tu código provee esto? – pepe

+0

@torr: Todo lo que tiene que hacer es hacer la página/blog de redireccionamiento a continuación. Podría recomendar revisar una página de redireccionamiento de PHP de todos modos, ya que le dará un mejor control, pero debería funcionar simplemente usando/blog –

Cuestiones relacionadas