Bueno al final le encontré una solución y la comparto con ustedes:
Planteo del problema: usar autenticación en un sitio para restringir el acceso sólo a personas autorizadas, pero mostrar un mensaje para todos los visitantes. Al mismo tiempo personalizar las paginas de error, y que el error 401 se muestre correctemente.
Estructura del sitio:
Código:
.htaccess
error.php
offline.php
mas los archivos del sitio
Archivo .htaccess
Código Apache:
Ver original## AUTENTICACIÓN
<FilesMatch "\.(php|phtml|js|jpg|gif|png|pdf|css)$">
AuthName "MI SITIO"
AuthUserFile /.htpasswds/.htpasswd
AuthType basic
Require valid-user
</FilesMatch>
<FilesMatch "(error.php|logo.png|offline.php)">
Satisfy Any
</FilesMatch>
## ERRORES PERSONALIZADOS
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 405 /error.php
ErrorDocument 500 /error.php
ErrorDocument 503 /error.php
DirectoryIndex offline.php index.php index.html index.htm
Archivo de error.php
Código PHP:
Ver original<?php
/*** CONFIGURACION ***/
$img_logo = "images/logo.png";
/*** ERRORES ***/
$status = $_SERVER['REDIRECT_STATUS'];
switch ($status) {
case 400: $codigos = array('ERROR 400 - ¡Solicitud Incorrecta!','Usaste una sintaxis no válida.','status400'); break; case 401: $codigos = array('ERROR 401 - ¡No estás Autorizado!','No accediste con las credenciales válidas necesarias.','status400');break; case 403: $codigos = array('ERROR 403 - ¡Acceso Prohibido!','No podés entrar a este lugar, estás en una zona restringida de nuestro servidor.','status400');break; case 404: $codigos = array('ERROR 404 - ¡No lo Encontramos!','No encontramos la URL que estas buscando.','status400');break; case 405: $codigos = array('ERROR 405 - ¡Ese método no está permitido!','Intentaste usar un método que no está permitido.','status400');break; case 500: $codigos = array('ERROR 500 - ¡Uyy, tuvimos un error interno!','La página que queres ver ha causado un error interno.','status500');break; case 503: $codigos = array('ERROR 503 - ¡No estamos disponibles por el momento!','Estamos haciendo unas modificaciones y todavía no terminamos. Volvé mas tarde y combrobá si terminamos. Si tenés usuario y contraseña entrá <a href="/index.html">acá</a>','status500');break; } ?>
<html>
<head>
<title><?php echo $codigos[0] ?></title>
<style type="text/css"><!-- estilos del error --></style>
</head>
<body>
<h1 class="<?php echo $codigos[2] ?>"><?php echo $codigos[0] ?></h1>
<img src="<?php echo $img_logo ?>" />
<h2>Pasó lo siguiente:</h2>
<p><?php echo $codigos[1] ?></p>
<p>Si tenes una pregunta, ponete en contacto con el webmaster enviando un email a <a href="mailto:<?php echo $email_webmaster ?>"><?php echo $email_webmaster ?></a>.</p>
</body>
</html>
Archivo offline.php
Código HTML:
Ver originalMensaje que dice que se esta trabajando.
Explicación del .htaccess- La Línea 2 a 7 del .htaccess pone autenticación a todos los archivos con la extensiones dadas en la linea 2
- Las líneas 9 a 11 excluye los archivos listados en la linea 9 de la autenticación
- de la línea 15 a 21 modificamos los mensajes de error predeterminado de apache
- Por ultimo en la línea 23 definimos los archivos que mostrara apache cuando sólo se escriba la /. En este caso primero mostrara offline.php y si no lo encuentra mustra el que sigue y así sucesivamente.
Funcionamiento
Cuando se escribe en la barra de direcciones el dominio (
www.midominio.com.ar) el servidor busca el archivo offline.php si lo encuentra muestra ese archivo pero si el usuario escribe por ejemplo
www.midominio.com.ar/contacto.htm antes de mostrar la página le pedirá que ingrese el usuario y la contraseña. Si no ingresa el usuario y la contraseña muestra el error personalizado 401. De esta forma me permite evitar tener que modificar los enlaces a la pagina de inicio, ya que si se escribe
www.midominio.com.ar/index.html me va apedir la contraseña y si el usuario esta autenticado me mostrara el index.html.
Cuando termine de modificar el sitio, renombr el archivo offline.html y quito comento las lineas de la autenticación y el sitio queda funcional sin mas cambios.
Bueno espero haberme explicado correctamente, y que esto les sirva.
Cualquier cosa me preguntan.
Saludos
PanuWeb