php .htaccess redirect include maintenance-mode

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:

  1. Agregue un nuevo archivo "incluir" en la parte superior de cada página de PHP.

  2. 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

Modo de mantenimiento para apache


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.