OVH Community, your new community space.

Cierre temporal de una web para mantenimiento


icenrg
16/03/2009, 16:09
Cita Publicado inicialmente por Power
¡¡¡ Funciona !!!

Gracias icenrg y j5boot.


Pensaba que .htaccess sólo funcionaba si estaba en el directorio de la web.
Pero he comprobado que estando en otro directorio, incluso varios niveles por encima, también funciona.

Esto me ahorrará muchíiiiiiisimo trabajo a la hora de parar todas las webs para alguna tarea de mantenimiento.

Lo dicho: muchas gracias.

Saludos
Muchas de nadas, solo faltaría, con la de ayuda que proporcionas tu en este foro, ya esta bien que de vez en cuando se te pueda "echar un cable" a ti también.

En cuanto a la solución, seguro que hay alguna forma mas 'elegante', pero al menos vale para salir del paso.

Salu2.

Power
16/03/2009, 15:22
¡¡¡ Funciona !!!

Gracias icenrg y j5boot.


Pensaba que .htaccess sólo funcionaba si estaba en el directorio de la web.
Pero he comprobado que estando en otro directorio, incluso varios niveles por encima, también funciona.

Esto me ahorrará muchíiiiiiisimo trabajo a la hora de parar todas las webs para alguna tarea de mantenimiento.

Lo dicho: muchas gracias.

Saludos

icenrg
16/03/2009, 14:07
Cita Publicado inicialmente por Power
Hola,

Gracias Icenrg, pero no me sirve.

El problema es que dentro de /home tengo un directorio para cada dominio y dentro de ese directorio otro llamado public_html que es donde puedo meter el .htaccess correspondiente a la web de ese dominio.

Pero tendría que meter uno para cada uno de los dominios (y son unos 80).

Lo que busco es algo rápido para que Apache presente un mensaje de "Cerrado por mantenimiento" para cualquier web de cualquier dominio del servidor.

Me imagino que debe haber alguna solución posible modificando httpd.conf

¿Alguna solución sencilla y rápida?
Gracias.

Saludos

Ya si eso ya me lo imagino, pero has probado a meter el .htaccess directamente en el directorio home? En Cpanel no lo se, pero en otras distribuciones si funciona, ya digo que no es la solución ideal, pero mientras funcione....

EDITO: Por ejemplo en la Release 2 esta el directorio home y dentro un directorio para cada dominio (o hosting con mas de un domini) y dentro el directorio www que es donde van las webs, pero si cuelgo un .htaccess dentro del home afecta a todos los hostings.

EDIT 2: Comprobado con CPanel también funciona (al menos en el servidor que tengo en USA). Si es como solución temporal solo para mudar los servidores yo creo que te puede valer.

j5boot
16/03/2009, 13:55
Hola Power

Supongo que para todos los dominios estaras utilizando VirtualHost en Apache, sino de otra forma no podrias hacerlo.

Lo que podrias hacer es que Apache no lea los archivos de configuracion de los Hosts virtuales y que a todo lo que escuche en el puerto 80 le muestre la pagina de mantenimiento.

Un saludo.

Power
16/03/2009, 13:36
Hola,

Gracias Icenrg, pero no me sirve.

El problema es que dentro de /home tengo un directorio para cada dominio y dentro de ese directorio otro llamado public_html que es donde puedo meter el .htaccess correspondiente a la web de ese dominio.

Pero tendría que meter uno para cada uno de los dominios (y son unos 80).

Lo que busco es algo rápido para que Apache presente un mensaje de "Cerrado por mantenimiento" para cualquier web de cualquier dominio del servidor.

Me imagino que debe haber alguna solución posible modificando httpd.conf

¿Alguna solución sencilla y rápida?
Gracias.

Saludos

icenrg
16/03/2009, 13:23
Cita Publicado inicialmente por Power
¿A alguien se le ocurre algo?
Gracias.

Saludos
Hombre siempre puedes crear un .htaccess en el directorio home (o como se llame tu directorio raíz donde tengas todos los alojamientos), eso afectaría a todos los alojamientos que tengas dentro. Seria una solución chapucera, pero que si es temporal creo que te valdría.

Si te es muy engorroso de crear por ssh, siempre puedes subirlo con el WinSCP

Power
16/03/2009, 11:49
Cita Publicado inicialmente por Power
Hola,

Ya resolví el tema con vuestras indicaciones.
Pero ahora se me plantea otra duda:

¿Cómo hago si quiero cerrar todas las webs del servidor?
(Resultaría muy útil a la hora de migrar todas las webs a otra máquina sin tener que ir modificando los .htaccess de cada una de ellas)

Agradezco vuestras respuestas por adelantado.

Saludos
¿A alguien se le ocurre algo?
Gracias.

Saludos

Power
15/03/2009, 10:32
Hola,

Ya resolví el tema con vuestras indicaciones.
Pero ahora se me plantea otra duda:

¿Cómo hago si quiero cerrar todas las webs del servidor?
(Resultaría muy útil a la hora de migrar todas las webs a otra máquina sin tener que ir modificando los .htaccess de cada una de ellas)

Agradezco vuestras respuestas por adelantado.

Saludos

Power
16/12/2008, 22:54
Cita Publicado inicialmente por carlose
Échale un ojo a esta página a ver si algo te interesa: http://www.addedbytes.com/cheat-sheets/
Algún artículo a mí me ha servido, son bastante claros.
Muchas gracias, carlose.

Los iré leyendo, poco a poco.

Saludos

carlose
16/12/2008, 22:09
Cita Publicado inicialmente por Power
¡¡¡ Perfecto, carlose !!!

Esto me anima más a estudiar el tema de las expresiones regulares.
Por cierto, he encontrado varios tutoriales sobre expresiones regulares pero algunos son, didácticamente, insoportables.
¿Me podéis recomendar alguno?

Muchas gracias.

Saludos
Échale un ojo a esta página a ver si algo te interesa: http://www.addedbytes.com/cheat-sheets/
Algún artículo a mí me ha servido, son bastante claros.

Power
16/12/2008, 08:49
Cita Publicado inicialmente por carlose
Ya lo entiendo, entonces yo creo que así sí:

Código:
RewriteEngine On
RewriteCond %{REQUEST_URI} !obras.php$
RewriteRule ^(.*) /obras.php [L,R=302]
¡¡¡ Perfecto, carlose !!!

Funciona de maravilla.
Cuando se intenta acceder a cualquier página de la web, se redirige a la página obras.php

Esto me anima más a estudiar el tema de las expresiones regulares.
Por cierto, he encontrado varios tutoriales sobre expresiones regulares pero algunos son, didácticamente, insoportables.
¿Me podéis recomendar alguno?

Muchas gracias.

Saludos

carlose
15/12/2008, 22:57
Cita Publicado inicialmente por Power
Perfecto carlose ... salvo en una cosa.
Como obras.php está en la misma web, hay una redirección en bucle que el navegador detecta.

La única solución que se me ocurre es:

Código:
RewriteEngine on
RewriteRule ^(.*) http://www.otraweb.com/obras.php [L,R=302]
No sé si habrá alguna otra solución al problema.

Gracias de nuevo.
Ya lo entiendo, entonces yo creo que así sí:

Código:
RewriteEngine On
RewriteCond %{REQUEST_URI} !obras.php$
RewriteRule ^(.*) /obras.php [L,R=302]
A ver si hay suerte...

Saludos!

Power
15/12/2008, 21:43
Perfecto carlose ... salvo en una cosa.
Como obras.php está en la misma web, hay una redirección en bucle que el navegador detecta.

La única solución que se me ocurre es:

Código:
RewriteEngine on
RewriteRule ^(.*) http://www.otraweb.com/obras.php [L,R=302]
No sé si habrá alguna otra solución al problema.

Gracias de nuevo.

carlose
15/12/2008, 21:32
Y ya por último, no te valdría simplemente esto en el .htaccess:

RewriteEngine On
RewriteRule ^(.*) /obras.php [L,R=302]

Power
15/12/2008, 21:29
Una buena mejora, carlose.
Muchas gracias.

carlose
15/12/2008, 21:23
No hagas la redirección 301, porque con eso dices que la página se ha movido permanentemente y los buscadores como google acabaran desindexando las páginas. Mejor una 302 que es temporal.

Power
15/12/2008, 18:24
Muchas gracias Zuche, neojordan y virtual.

Pues sí. No sé por qué tenía yo la idea de que las configuraciones cargadas en un .htaccess sólo afectaban a 2 niveles de directorios por debajo.

Ha habido que hacer algunos retoques y aún no funciona de todo, pero ya estoy en el buen camino:

He tenido que añadir delante RewriteEngine on
Y para que me tomase la web igual con www que sin ellas, he puesto:

Código:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^midominio.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.midominio.com$
RewriteRule ^(.*)$ http://www.midominio.com/bloqueo.html/ [R=301,L]
El problema es que la página bloqueo.html también es afectada por la redirección, no se presenta y el navegador indica que hay una redirección ciclíca.
A eso no le veo más solución que poner la página bloqueo.html en otra web diferente.

Y si se tienen otros dominios aparcados en la misma web debo añadir más líneas del tipo:
Código:
RewriteCond %{HTTP_HOST} ^estedominiotambien.com$ [OR]
Aunque supongo que este problemilla tendrá solución cambiando la expresión regular por una más general que englobe cualquier tipo de dominio.
(Eso tendré que estudiarlo porque estoy un poco atrancado en el tema de las expresiones regulares).

Saludos

neojordan
15/12/2008, 17:50
Exacto. Si lo pones en la raiz afecta a todos los directorios dentro de ella.

Zuche
15/12/2008, 17:31
RewriteCond %{HTTP_HOST} ^(www.tudominio\.com)$ [NC]
Sorry, olvidé situar la barra en el primer punto xD.
Queda así:
RewriteCond %{HTTP_HOST} ^(www\.tudominio\.com)$ [NC]

Saludoss.

Zuche
15/12/2008, 17:23
Puedes utilizar un .htaccess donde indique que al acceder a la dirección de tu página (www.dominio.com/..* y dominio.com/..*) automáticamente redirija hacia un bloqueo.html por ejemplo.

Por lo tanto todo acceso sea.. dominio.com/index.php?sss o dominio.com/carpeta, etc.. redirecciona hacia "bloqueo.html".

Mira (lo pones en la raiz principal del dominio):
RewriteCond %{HTTP_HOST} ^(www.tudominio\.com)$ [NC]
RewriteRule ^(.*)$ http://www.%1/bloqueo.html [R=301,L]

Saludos!.

Power
15/12/2008, 16:30
Cita Publicado inicialmente por neojordan
Pide permisos de logueo desde .htaccess
Gracias neojordan.

Pero eso me obligaría a poner .htaccess en todos los directorios y quería un procedimiento simple y rápido para poder bloquear y desbloquear el acceso completo a todas las páginas de la web.

Saludos

neojordan
15/12/2008, 16:18
Pide permisos de logueo desde .htaccess

Power
15/12/2008, 16:06
Gracias virtual.

Lo del bloqueo (suspensión) de la cuenta desde WHM/cPanel no me vale porque:
- Hace una redirección a una página con el nombre del servidor.
- Bloquea también las cuentas FTP y los correos.

La otra opción es la que hacía (en parte): poner otro fichero index.html con un mensaje de web en obras.
Pero la duda la tengo en desde donde bloquear el resto de páginas.
Si lo hago con una redirección desde el .htaccess del directorio raiz de la web, creo que no me vale nada más que hasta 2 niveles inferiores de directorios (así tengo configurado Apache).

¿Habría alguna otra forma de bloqueo más completo y que se pueda hacer y deshacer de forma rápida?

Saludos

virtual
15/12/2008, 12:05
Pues o bien la bloqueas desde el panel de control o bien le cambias los permisos a la carpeta principal de esa cuenta para que nadie pueda verla.

Otra forma sencilla, es poniendo un archivo index.html en la cuenta que ponga que estas en remodelación y bloquear el acceso a las otras carpetas, no cuentas.

Power
15/12/2008, 12:00
Hola,

Tengo una duda que, desde hace tiempo quería consultaros:

En algunas ocasiones debo cerrar, temporalmente, una web para que no pueda accederse a ninguna de sus páginas, pero sí a las webs de otros dominios hospedados en el servidor.

La necesidad se me presenta cuando necesito hacer labores de mantenimiento (por ejemplo cambio de estructura de alguna tabla de una base de datos que es utilizada por dicha web).

Hasta ahora no he sabido resolver corrrectamente bien el tema.
¿Cómo lo haríais vosotros?.

Gracias por adelantado.
(Mi servidor utiliza CentOS+cPanel)

Saludos