Foros del Web » Administración de Sistemas » Apache »

ErrorDocument en Htaccess

Estas en el tema de ErrorDocument en Htaccess en el foro de Apache en Foros del Web. Buenas Estimados, nuevamente por ak. Como comente en un post anterior soy totalmente nuevo con .htaccess, y pues ahora estoy presentando problemas con el "errorDocument" ...
  #1 (permalink)  
Antiguo 01/05/2013, 06:59
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 2 meses
Puntos: 16
ErrorDocument en Htaccess

Buenas Estimados, nuevamente por ak. Como comente en un post anterior soy totalmente nuevo con .htaccess, y pues ahora estoy presentando problemas con el "errorDocument" pues cree una página para el error 404 y puse la siguiente linea
Código .htaccess:
Ver original
  1. ErrorDocument 404 404.html

El apache lo que hace, en vez de dirigirme a la pagina es ponerme una pagina en blanco con el nombre de esa pagina "404.html". Revisando ejemplos en la web como el siguiente http://www.addedbytes.com/articles/f...for-beginners/ vi q ellos colocan un "/" antes de la página, por lo que hice lo mismo
Código .htaccess:
Ver original
  1. ErrorDocument 404 /404.html
Pero entonces el navegador muestra el siguiente error:
Código Apache:
Ver original
  1. [SIZE="4"][B]Not Found[/B][/SIZE][B]
  2.  
  3. The requested URL /pruebas/uvuvuoyv was not found on this server.
  4. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.[/B]
Por tanto, la verdad no se que es lo q me falta o que hago mal. en los ejmplos se ve algo tan sencillo. pero no se porque no me funciona, incluso borre todas las otras lineas que tenia en el archivo para ver si era q algo afectaba o el orden o no se, pero de igual manera passa lo mismo.

Alguien q pueda darme una luz? Muchas gracias. Saludos.
__________________
Lo imposible es lo posible visto por los ojos de un incapaz.
Si te sirve la respuesta. dale + al karma.
Saludos
  #2 (permalink)  
Antiguo 01/05/2013, 08:56
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 2 meses
Puntos: 16
Respuesta: ErrorDocument en Htaccess

Ok. Esto lo solucione colocando el nombre de la carpeta Base en la condicion RewriteRule
Me explico.
Código Apache:
Ver original
  1. #En vez De
  2. #RewriteRule ^productos$ /principal.php [L]
  3. #Lo siguiente:
  4. RewriteRule ^productos$ /MiSitio/principal.php [L]
Pero entonces, mi duda creo q ahora es mas facil y espero alguien pueda decirme. Para eso no es que se utiliza la instruccion "rewriteBase"?
__________________
Lo imposible es lo posible visto por los ojos de un incapaz.
Si te sirve la respuesta. dale + al karma.
Saludos
  #3 (permalink)  
Antiguo 01/05/2013, 09:00
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: ErrorDocument en Htaccess

el .htaccess que contiene la directiva debe de estar en la raiz de tu web, y luego en la ruta ponés la relativa a la raíz del sitio

ejemplo
si tu raiz (el document_root del sitio) es /htdocs
ponés ahi el htaccess y dentro
Código:
errorDocument 404 /404.html
y el 404.html en la raíz también, si el 404 lo ponés en otra carpeta
Código:
errorDocument 404 /otracarpeta/404.html
Hay una particularidad con IE, si tu 404.html tiene menos de 512 bytes, te muestra la página personalizada de error del sistema windows no la del Apache

ej.
404.html
Código:
<html>
<head>
<title>Error 404</title>
</head>
<body>
<h1>Página no encontrada</h1>
</body>
</html>
no te lo toma en IE, podés corregirlo poniendo simplemente
Código:
<html>
<head>
<title>Error 404</title>
</head>
<body>
<h1>Página no encontrada</h1>
<!--
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -- > completás con caracteres hasta superar los 512 bytes
-->
</body>
</html>
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 01/05/2013, 10:52
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 2 meses
Puntos: 16
Respuesta: ErrorDocument en Htaccess

Cita:
Iniciado por emprear Ver Mensaje
el .htaccess que contiene la directiva debe de estar en la raiz de tu web, y luego en la ruta ponés la relativa a la raíz del sitio

ejemplo
si tu raiz (el document_root del sitio) es /htdocs
ponés ahi el htaccess y dentro
Código:
errorDocument 404 /404.html
y el 404.html en la raíz también, si el 404 lo ponés en otra carpeta
Código:
errorDocument 404 /otracarpeta/404.html
Hay una particularidad con IE, si tu 404.html tiene menos de 512 bytes, te muestra la página personalizada de error del sistema windows no la del Apache

ej.
404.html
Código:
<html>
<head>
<title>Error 404</title>
</head>
<body>
<h1>Página no encontrada</h1>
</body>
</html>
no te lo toma en IE, podés corregirlo poniendo simplemente
Código:
<html>
<head>
<title>Error 404</title>
</head>
<body>
<h1>Página no encontrada</h1>
<!--
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -- > completás con caracteres hasta superar los 512 bytes
-->
</body>
</html>
Saludos
Ok. MI root es Tienda:
Y este es el codigo que tengo hasta ahora:
Código Apache:
Ver original
  1. RewriteEngine On
  2. RewriteBase /Tienda
  3.  
  4. #================================================
  5. #Remueve el ultimo slash: ejemplo: www.pagina.com/hola/ por www.pagina.com/hola
  6. RewriteCond %{REQUEST_FILENAME} !-d
  7. RewriteRule ^(.*)/$ /$1 [R=permanent,QSA]
  8. #================================================
  9.  
  10. RewriteCond %{REQUEST_FILENAME} !-f
  11. RewriteCond %{REQUEST_FILENAME} !-d
  12. RewriteRule ^principal\.php /registroUsuario.php [R]
  13. RewriteRule ^productos$ /Tienda/principal.php [L]
  14. RewriteRule ^productos/(.*)$ /Tienda/principal.php?cat=$1
  15. #RewriteRule ^HojasDeEstilo/$ /Tienda/css/[L]
  16. #================================================
  17. #ERRORES
  18. #================================================
  19. ErrorDocument 404: /Tienda/Error/404.php
  20.  RewriteCond %{REQUEST_FILENAME} !-f
  21.  RewriteCond %{REQUEST_FILENAME} !-d
  22.  RewriteCond %{REQUEST_FILENAME}\.php -f
  23.  
  24.  RewriteRule ^(.*)$ $1.php [L,QSA]

Fijate que le tuve que poner la direccion ROOT en cada linea, de lo contrario no me tomaba la redireccion correctamente y no me encuentra el archivo. Esto sucede usando esa instruccion "rewriteBase" o no teniendola me pasa lo mismo, por eso mi duda de para que funciona esa instruccion.

Adicionalmente, pues probando esto veo que efectivamente al introducir algo como
Código Apache:
Ver original
  1. "localhost/tienda/cualquiercosa"
el me manda a la pagina 404. sin problemas.
Pero si coloco algo como
Código Apache:
Ver original
  1. localhost/tienda/productos/cualquiercosa
El sitio pierde la ubicacion JS y los CSS . Alguna idea de porq puede ser? :S
Mas perdido q adan el dia de las madres.
__________________
Lo imposible es lo posible visto por los ojos de un incapaz.
Si te sirve la respuesta. dale + al karma.
Saludos
  #5 (permalink)  
Antiguo 01/05/2013, 11:38
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: ErrorDocument en Htaccess

primero corrijamos esto

Código:
ErrorDocument 404: /Tienda/Error/404.php
que esta mal, ya que te sobran esos 2 Puntos (:)

El rewriteBase no es necesario en este caso (si no va a buscar /Tienda dentro de /Tienda)

Te recomiendo que cuando hagas este tipo de cosas vayas probando de una en una

supongamos que tenés
http://midominio.com
en la raíz /

creás un htaccess con
Código:
ErrorDocument 404 /Tienda/Error/404.php
tan solo eso, y por supuesto creas
http://midominio.com/Tienda/Error/404.php

luego si, verificás con
http://midominio.com/archivoquenoexiste.html

Eso debería redirigirte a 404.php
Recién ahi, si funciona, y a continuación, empezás a agregar el resto de las directivas.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: htaccess, html, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:16.