php - Cómo implementar el "Modo de mantenimiento" en un sitio web ya establecido
.htaccess redirect (6)
La forma más simple sería centralizar parte de la lógica con respecto a la generación del sitio. De esta forma, puede activar el modo de mantenimiento y redirigir a los que no sean administradores a una página diferente. Esto no sería difícil de hacer, ya que imagino que tiene algún código que sigue apareciendo por todas partes, así que simplemente amplíe la funcionalidad de inicio de sesión para buscar una variable global (si no tiene variables globales comunes en su página). puedes simplemente configurarlo en .htaccess vía setenv).
Construí un sitio web (PHP) con más de 60 páginas. Me acabo de dar cuenta (desafortunadamente) de que debería haber incorporado una función "En modo de mantenimiento" para permitir que un administrador deshabilite temporalmente el sitio web y lo dirija a una página de Modo de mantenimiento. Esto solo permitiría a aquellos que iniciaron sesión como administrador ver el sitio web.
Las opciones que veo son:
Agregue un nuevo archivo "incluir" en la parte superior de cada página de PHP.
Tengo una inclusión que se utiliza para mostrar la barra de navegación en
cada página (clase de navegación). Podría escribir el modo de mantenimiento
código en esta clase.
¿Tengo alguna otra opción? La primera opción no parece ser la más eficiente, y la segunda parece una mala programación. ¿Hay alguna otra forma mejor de incluir un nuevo archivo en cada archivo php?
¡Gracias!
ps - el sitio aún no se lanzó
cadena auto_prepend_file
Especifica el nombre de un archivo que se analiza automáticamente antes del archivo principal. El archivo se incluye como si se llamara con la función require (), por lo que se usa include_path.
El valor especial ninguno desactiva el preaprovisionamiento automático.
puede configurar esto en php.ini, o en el archivo de host apache (virtual) o .htaccess con php_flag auto_prepend_file file.php
[o php_admin_flag (?)]
editar
- Tal vez no deberías poner el archivo de inclusión en tu directorio raíz web o una subcarpeta.
- Y recuerda llamar a la salida o morir al final.
Puede usar .htaccess
para redirigir a otra página mientras está en modo de mantenimiento.
Tres ejemplos variados:
RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^11/.111/.111/.111
RewriteCond %{REQUEST_URI} !^/maintenance/.html$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]
.htaccess Redirección de página "Abajo para mantenimiento"
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_HOST} !^888/.888/.888/.888
RewriteRule $ /maintenance.html [R=302,L]
Redirigir a la página de mantenimiento durante la actualización con .htaccess
# redirect all visitors to alternate site but retain full access for you
ErrorDocument 403 http://www.alternate-site.com
Order deny,allow
Deny from all
Allow from 99.88.77.66
En lugar de especificar direcciones IP, también puede verificar contra HTTP_USER_AGENT en RewriteCond ..
RewriteCond %{HTTP_USER_AGENT} !MyCrazyString
RewriteCond %{THE_REQUEST} !upgrade/.txt
RewriteRule .* /upgrade.txt [R=307,L]
Cualquier persona con "MyCrazyString" etiquetada en el final de la cadena de agente de usuario de su navegador puede obtener acceso, todos los demás obtienen la página / sitio de modo de mantenimiento.
Mientras no se requiera alta seguridad, es ideal; Rápido y fácil de diseminar a los administradores, completamente portátil, y lo más importante, no se romperá si vuelve a conectar su DSL cuando el único tipo con acceso real al servidor está dormido al otro lado del mundo.
; o) Cor
Creo que las expresiones estándar de Apache son más fáciles de entender que las reglas de reescritura .
Antes del mantenimiento, cambio el nombre de / home / coolcmd / site_maintenance_off a / home / coolcmd / site_maintenance_on .
Fragmento de código para /.htaccess:
# If file, directory or symlink /home/coolcmd/site_maintenance_on exists,
# and requested file is not /maintenance.html,
# and not an admin''s IP...
<If "-e ''/home/coolcmd/site_maintenance_on'' && %{REQUEST_URI} != ''/maintenance.html'' && %{REMOTE_ADDR} != ''111.111.111.111''">
# Generate status code 503 for URL beginning with /, in other words for ANY URL.
# This is not "the real redirection 3xx".
Redirect 503 "/"
# This page handles status code 503. All external resources used by page
# (for example, maintenance.css), if any, must be added to <if> above.
ErrorDocument 503 /maintenance.html
# Maintenance probably will end in 10 minutes.
Header set Retry-After 600
</If>
Sé que esta es una pregunta antigua, pero estoy agregando esto para los buscadores futuros que se encuentran con esta página mediante la búsqueda.
Yo uso un redireccionamiento de PHP.
En la parte superior de cada página, agregue las siguientes líneas:
<?php
include(''PATH/TO/FILE/config.php'');
if(maintenance == 1) {
header(''Location: http://example.com/maintenance.php'');
}
else {
// do nothing
}
?>
Y en tu archivo config.php simplemente haz una variable como tal
$maintenance = 0; // turns maintenance mode off
Cuando desee que su sitio esté en modo de mantenimiento, simplemente cambie el "0" a "1". Esto redirigirá a todos los visitantes de su sitio a una página de mantenimiento.
Escribí ese código bastante rápido sin probarlo, pero debería funcionar.