2011-10-14 18 views
8

Estoy intentando escribir una regla para redirigir todas las URL a una página temporal para que se pueda realizar alguna actualización del sitio, pero termina en un ciclo infinito.redirección temporal a la página de mantenimiento

RewriteCond %{HTTP_HOST} ^(.*)mysite\.com$ 
    RewriteCond %{REQUEST_URI} !^(.*)temp$ 
    RewriteRule ^(.*)$ http://www.mysite.com/temp [R=307,L] 

Cómo comprobar si es una página temporal?

Respuesta

10

Debe escribir la regla para todas las solicitudes excepto el archivo de mantenimiento.

.htaccess debería ser:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/maintenance\.html$ 
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L] 
1

lo que hago es para redirigir todo el tráfico a una página maintenance.html cuando no viene de mi IP.

La primera condición de reescritura evita un ciclo infinito.

RewriteCond %{REQUEST_URI} !/maintenance.html$ 
RewriteCond %{REMOTE_ADDR} !^172\.16\.254\.1$ 
RewriteRule $ /maintenance.html [R=302,L] 
1

Funciona, lo probé. Redirigirá todas las solicitudes a una página de mantenimiento.

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000 
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] 
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] 
RewriteRule .* /maintenance.html [R=302,L] 
</IfModule> 
Cuestiones relacionadas