apache mod-rewrite maintenance

apache - Regla de reescritura para páginas de "sitio inactivo"



mod-rewrite maintenance (5)

No veo a nadie usando 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.

Intenté 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.

¿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]


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); ?>

¿Algún 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).


Las RewriteRules que estoy usando en mi sitio web cuando quiero cerrarlo para mantenimiento son las siguientes:

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 al menos eso pareció) cada vez que los usé)

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

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


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

Lo único que tuve que hacer fue agregar

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

A mi httpd.conf y asegúrese de que: [Apache installation] /htdocs/custom-errors/maintenance-message.html existe.


No necesita una redirección externa. Simplemente envíe el código de estado 503 y su documento de error.

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

Pero necesita que Apache 2.x use un código de estado diferente con el indicador R que no sea 3xx.