2009-08-26 13 views
5

Estaba intentando instalar este .htaccess para notificar a mis usuarios del mantenimiento del sitio. Parece que la primera [L] no funciona y la segunda reescritura lo está haciendo todo.Regla de reescritura para páginas "de bajada de sitio"

¿Cómo hacen mensajes de mantenimiento del sitio?

RewriteEngine on 

RewriteRule ^s/down$ index.html [L] 
RewriteRule ^(.*)$ http://metaward.com/s/down [R=302,L] 

Respuesta

5

Esto parece funcionar (pero tengo que configurar el código de estado en PHP)

RewriteEngine on 

RewriteCond %{REQUEST_URI} !^/static/.*$ 
RewriteCond %{REQUEST_URI} !^/media/.*$ 
RewriteRule .* down.php [L] 

y en down.php

<?php 
header('HTTP/1.1 503 Service Temporarily Unavailable',true,503); 
?> 

Cualquier problema con esto? Mis principales preocupaciones son lo que los usuarios ven (y por eso mantengo el contenido estático) y lo que los motores de búsqueda ven (el código de estado 503).

+0

Esto es lo que decidí, pero 'RewriteCond's no son necesarios. En este caso, 'RewriteRule! ^/(?: static | media)/down.php [L]' funcionará. – Walf

1

Los RewriteRules que estoy usando en mi sitio web cuando quiero apagarlo para el mantenimiento son estos:

RewriteCond %{REMOTE_ADDR} !=MY_IP_ADDRESS 
RewriteRule ^$ /down.html [L] 
RewriteCond %{REMOTE_ADDR} !=MY_IP_ADDRESS 
RewriteRule [^/down.html$] /down.html [L] 

(Tal vez no del todo "optimizado", debería decir .. . Pero funcionó (o eso parecía) cada vez que los utilicé)

Todo menos down.html se redirige a down.html - excepto para mí, por supuesto: quiero poder probar el mantenimiento operaciones que estoy haciendo, obviamente

Y cuando termino, simplemente comento esas cuatro líneas.

+1

La condición de la dirección IP: ordenada. –

+0

¿no hará eso que los motores de búsqueda indexen su página como si estuviera perfectamente pero sirviendo su página más extraña? –

+0

@Paul: Tengo que admitir que no estoy seguro; He puesto en down.html como una medida de seguridad, pero no estoy seguro de qué haría un bot: nunca he visto el contenido de mi la página down.html en google, eso es seguro, y nunca he notado nada "malo" para las otras páginas ;; pero mis operaciones de mantenimiento son raras, y nunca duraron más de 3 horas ;; y mi sitio web no es grande/famoso, por lo que no está indexado con demasiada frecuencia ... ;; Aún así, si alguien ve una manera de mejorar esto, estoy definitivamente interesado (sería bueno dar una respuesta, ¡y obtener una yo mismo!) ;-) –

6

No necesita una redirección externa. Simplemente envíe el 503 status code y su documento de error.

RewriteCond %{ENV:REDIRECT_STATUS} !=503 
RewriteRule ^(.*)$ /503.html [R=503,L] 
ErrorDocument 503 /503.html 

Pero necesita Apache 2.x para usar un código de estado diferente con la marca R que no sea 3xx.

+0

503 no hará que el navegador redirija. –

+0

@Paul Tarjan: nunca he dicho eso. Apache 2 acaba de extender el uso del indicador 'R' para configurar los códigos de estado. Solo los códigos de estado 3xx causarán una redirección externa. – Gumbo

+0

interesante, ¿entonces la R no fuerza una redirección? wow, testing ... –

0

Utilizo Apache como proxy para una aplicación de ruby ​​on rails.

Lo único que tenía que hacer era poner

ProxyPass /custom-errors ! 
ErrorDocument 503 /custom-errors/maintenance-message.html 

Para mi httpd.conf y asegúrese de que: existe [Instalación de Apache] /htdocs/custom-errors/maintenance-message.html.

0

No veo a nadie que use el encabezado Retry-After. He leído (pero ya no tengo el enlace como lo leí hace un tiempo) que debes usar un 503 en el combo con un Reintentar después de n (n = número de segundos para volver a intentarlo; 3600 es una hora) encabezado. Si usas el 503 y el Reintentar-Después en el combo, especialmente en tu archivo robots.txt/sitemap, no debería interferir con los enlaces y el ranking de la página para SEO si no lo dejas así durante mucho tiempo.

Cuestiones relacionadas