2010-12-02 21 views
9

Aquí está la parte pertinente del archivo .htaccess:página de error personalizada en Apache 2 por 401

AuthUserFile /var/www/mywebsite/.htpasswd 
AuthGroupFile /dev/null 
AuthName protected 
AuthType Basic 
Require valid-user 

ErrorDocument 400 /var/www/errors/index.html 
ErrorDocument 401 /var/www/errors/index.html 
ErrorDocument 403 /var/www/errors/index.html 
ErrorDocument 404 /var/www/errors/index.html 
ErrorDocument 500 /var/www/errors/index.html 

raíz Docuement se establece en/var/www/misitioweb/web, es el de muchos host virtuales. Puedo navegar a la página index.html.

Todo lo que estoy viendo es la página genérica Apache 401, cualquier pensamiento.

EDIT: Este es el mensaje de error en el navegador:

Authorization Required

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.

Additionally, a 401 Authorization Required error was encountered while trying to use an ErrorDocument to handle the request. Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny8 with Suhosin-Patch Server at www.dirbe.com Port 80

Respuesta

7

Asegúrese de que/var/www/errores es legible por el usuario apache e incluir esto en su configuración de Apache:

<Directory /var/www/errors> 
    Order allow,deny 
    Allow from all 
</Directory> 
+1

Sin suerte. Y nada en ninguno de los registros de errores. Sin embargo, estoy viendo esto en la página de error: "Además, se encontró un error de Autorización 401 al intentar utilizar un ErrorDocument para manejar la solicitud". –

+0

Intente poner sus líneas de autenticación de solicitud dentro de una sección . –

+0

gracias por la pista, pero no sirvió para nada. Obtuvo un error:

3

Esta pregunta (y respuestas y comentarios) me ayudó mucho, ¡muchas gracias!

He resuelto una manera ligeramente diferente, y quería compartir. En este caso, necesitábamos proporcionar un documento de error 401 personalizado y la ruta de acceso raíz necesaria para ser transferido a una aplicación de back-end.

Por lo tanto, por ejemplo, http://example.com necesarios para publicar contenido desde http://internal-server:8080/. Además, el http://example.com debe protegerse utilizando Basic Auth con un documento de error 401 personalizado.

Así que creé un directorio llamado "error" en el DocumentRoot. He aquí las líneas relevantes desde el host virtual:

ErrorDocument 401 /error/error401.html 

    # Grant access to html files under /error 
<Location "/error"> 
Options -Indexes 
Order Deny,Allow 
Allow from all 
</Location> 

    # restrict proxy using basic auth 
<Proxy *> 
Require valid-user 
AuthType basic 
AuthName "Basic Auth" 
AuthUserFile /etc/apache2/.htpasswd 
</Proxy> 

    # Proxy everything except for /error 
ProxyRequests Off 
ProxyPass /error ! 
ProxyPass/http://internal:8080/ 
ProxyPassReverse/http://internal:8080/ 
+0

Intenté esto, pero obtengo la página de error antes de solicitar el inicio de sesión. ¿Alguna idea? – user2643679

0

ErrorDocument toma en una ruta URL absoluta en lugar de una ruta de archivo. Por lo tanto, debe ser:

ErrorDocument 404 /error/error.html 

Suponiendo que debajo de su documento raíz se encuentre un archivo /error/error.html.

Cuestiones relacionadas