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.