Comunidad de diseño web y desarrollo en internet online

Paginas de error personalizadas

Citar            
MensajeEscrito el 07 Jul 2011 06:55 am
Hola a todos de nuevo,

Tengo un proyecto en el que reescribo las url con htaccess pasando a variables con el siguiente código:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.novoestetic\.es [nc]
RewriteRule ^productos/([a-zA-Z]+)/([a-zA-Z]+)/([a-zA-Z0-9]+).html$ base.php?subdominio=%1&idioma=$1&seccion=$2&subseccion=$3 [L,NC]
RewriteRule ^productos/([a-zA-Z]+)/([a-zA-Z]+).html$ base.php?subdominio=%1&idioma=$1&seccion=$2 [L,NC]

Luego recupero las variables y voy cargando el contenido...bueno hasta aquí creo que está bien hecho (si no es así corregirme)

El tema es que no sé como mostrar una misma pagina de error personalizada tanto si no entra dentro de las reglas de rewrite como que si que entre pero no se encuentre el contenido pasado por la variable.

Alguna idea?...

Por Bobosa

69 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Jul 2011 01:22 pm
Antes de las reglas de reescritura pon:

Código :

ErrorDocument 404 error404.htm

Donde "error404.htm" será tu página de error personalizada.

Para el caso que no exista el contenido y haya pasado por las reglas de reescritura, nada más muestras el contenido de "error404.htm" después de enviar la cabecera con el código de error 404.

Código PHP :

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Jul 2011 01:59 pm
No te acabo de comprender.

Respecto a " ErrorDocument 404 error404.htm " tengo claro para que sirve pero lo que no sé es como que sea la misma que pasando las reglas...te comento algo más el tema.

Como ya comenté no sé si estoy haciendo bien el tema de las páginas dinamicas.

Cuando alguien accede a la Web con la rescritura de url, carga la página base.php la cual recoge las variables Get y realiza includes de codigo, por ejemplo:

www.dominio.com/pagina/subpagina es igual a www.dominio.com/base?variable1=pagina&variable2=subpagina.

Base.php recoge las variables y realiza un include de contenido PHP guardado con el nombre de la variable1. Este contenido utiliza la variable2 para mostrar el contenido final.

No sé si estoy haciendo bien, si se hace de otra manera, dímelo.

El tema es que si base.php detecta que el fichero no existe, mostrará un contenido especifico de error, por ejemplo un mapa general del sitio.

Pero como hago para mostrar la pagina de error desde el rewrite.

En cuanto eso que me explicas de "header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");", no lo he entendido bien, puede ser que cuando haga el include he de enviarlo para que salte el htaccess y sea este el que redireccione a la pagina de error?

Por favor, si pudieras ser más especifico te lo agradecería un montón.

Por Bobosa

69 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Jul 2011 02:20 pm
lo que tienes que aser es configurar tu htaaccess en una pagina de errror, despues aser que el htaccess buesque en los direcctorios, no importa en donde te encuentres XD


tu pagina de error se llamara index.php, si quieres aser que sellame de otra forma o noce tienes que crearla pagina y despues te aconsejo crear un redireccionamiento XD, bueno ay te las arreglas, el punto es que asi se ase,


RewriteBase /
#si tienes muchas carpetas como imagenes, galeria, etc....
DirectoryIndex index.php ../index.php ../../index.php ../../../index.php
#paginas de error
ErrorDocument 404 http:../../../../index.php

#aca avajo pones tus reglas de urls amigables o olo que se te de en gana XD

Por caqca

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Jul 2011 02:34 pm
Gracias caqca, por ayudar...

Pero mostrar una pagina de error con htaccess lo he comprendido, pero eso es cuando no encuentra la pagina fisica.

Pero cuando encuentra la pagina fisica pero las variables no pueden aportar contenido dinamico? Que hago?

Otra cosa a aclarar, lo que pretendo es tener varias reglas para pasar de cero a 3 variables get.
Y que dependiendo de la pagina (variable1) utilice de una manera u otra las demas variables.

No sé si está bien planteado o tengo que crear reglas mas especificas a las paginas, por ejemplo:

Para pagina de productos.
RewriteRule ^productos/([a-zA-Z]+)/([a-zA-Z]+)/([a-zA-Z0-9]+).html$ base.php?subdominio=%1&idioma=$1&seccion=$2&subseccion=$3 [L,NC]

Para pagina de servicios.
RewriteRule ^servicios/([a-zA-Z]+)/([a-zA-Z]+)/([a-zA-Z0-9]+).html$ base.php?subdominio=%1&idioma=$1&seccion=$2&subseccion=$3 [L,NC]

Dime, cual es el planteamiento que se suele hacer?

Por Bobosa

69 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Jul 2011 08:57 pm
Bobosa:
Te he comprendido desde el principio y he respondido apropiadamente.

Y te he dicho que si tu script (con variables o sin ellas) no es capas de encontrar el contenido solicitado, entonces genere el error 404 usando header() de la forma que ya te he dicho.

La función header(), tal como la he puesto, no redirecciona a nada, simplemente le dice al navegador que el recurso al que intenta acceder no existe. De eso se trata el error 404. Y como tu script no es capaz de generar el contenido que el navegador pide, entonces cargues el contenido de tu archivo de error o simplemente muestres un mensaje en cuestión o lo que se te ocurra.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Jul 2011 11:03 pm
Lo he provado pero me genera un error

Warning: Cannot modify header information - headers already sent by (output started at /hosting/www/dominio.es/public/base.php:2) in /hosting/www/dominio.es/public/base.php on line 9

Por lo que veo es que ya he generado un header ¿no?

Entonces que estoy haciendo mal para crear la estructura de paginas dinámicas?

Por Bobosa

69 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Jul 2011 12:18 pm
Evidentemente estás enviando algo al navegador antes de header(). Como no tengo tu código fuente, no te puedo decir qué, ni dónde ni cómo. Eso tendrás que investigarlo tú.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 08 Jul 2011 03:57 pm
oye Bobosa o BABOSA o noce como te yamas XD
mira, noce que quieres aser?
tienes una web y tienes subdominios, y quieres tener la misma pagina de error?
o quieres tener la misma pagina de error, en dos dominios?
o cuantos dominios tienes para empesar

PORQUE EL NOMBRE DE TU POS SE LLAMA "paginas-de-error-personalizadas"

lo primero que se ase es aspecificar tu pagina de error
despues buscar la pagina de error, y si no la encuentras pues busca otra o pones el indexXD
y las reglas de urls amigables van al fina,

tambien te aconcejo configurar el apache porque si no lo tienes configurado no sirve tu hatacceess XD

mira si tienes canal de youtube escribemelo aca abajo y si quieres te ago un tutorial o noce XD

Por caqca

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Jul 2011 04:51 pm
Hola caqca,

Primero el nombre está correctamente escrito "Bobosa"

Te explico desde el principio...

Partimos que tengo varios subdominios con nombres pertenecientes a clientes "cliente.dominio.com"

Con reglas en .htaccess paso a url extensas del tipo "www.dominio.com/index.php?cliente=subdominio&pagina=$1"

Si la url solicitada no entra en una de las reglas de rewrite muestra una pagina por defecto
Si la url solicitada entra dentro la regla de rewrite entonces carga en index.php utilizando un include, el script externo que tiene por nombre el valor de la variable $1.

Pues bien si al comprobar que el contenido a cargar no existe, como hago para mostrar la misma pagina de error personalizada descrita en el .htacces.

He intentado lo que me indicaba el amigo DriverOp, pero como se realiza todo por include, me devuelve un error.

Alguna idea para solucionar el tema?

Por Bobosa

69 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Jul 2011 05:03 pm
Mira lo que ando buscando es crear una estructura de paginas dinámicas y paginas de error personalizadas del tipo a la que se utilizan en:

http://www.apple.com/es/ipodnano/features.html

Ah! una cosa que me ha llamado la atención es que todas las imágenes tienen como url un subdominio...¿alguna idea del porque?

Por Bobosa

69 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Jul 2011 07:07 pm

Bobosa escribió:


http://www.apple.com/es/ipodnano/features.html

Ah! una cosa que me ha llamado la atención es que todas las imágenes tienen como url un subdominio...¿alguna idea del porque?

del por que? pues por el simple hecho de que esas imagenes son utilizadas en dinstintos dominio y para que el usuario sienta esa percepcion de rapidez al visitar un sitio u otro es debido a que el navegador generalmente guarda en cache todo imagenes,textos,js,css y otros q no cambian al menos que se los especifiques , pues como ejemplo digamos :
tengo 4 subdominios,

pedro.misitio.com
juana.misitio.com
pamela.misitio.com
imagenes.misitio.com

los 3 sitios


pedro.misitio.com
juana.misitio.com
pamela.misitio.com

usan un background de esos chulos q hay pero q pesa como 1,5 megas y esta alojado en

imagenes.misitio.com/el_mejor_bg.png

el usuario al entrar en cualquier subdominio ya sea juana pedro pamela una vez que carge dicho background y este decide entrar a otro sitio dicha imagen no se volvera a cargar y por ende no tendra que esperar a que termine de cargar la imagen ya que la recuperar del cache del navegador .

si te das cuenta ese mismo metodo usa google para sus scripts API's como mootools jquery y otros varios que hay , otro nombre que se le da es un hotlink claro que tiene sus riesgos si no lo configuras bien te van a chupar el ancho de banda de tu hosting, ya q hay q configurar que dominios o subdomions tienen acceso y esas cosas

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Jul 2011 07:58 pm
Muchas gracias por tu información...

Entoces como puedo configurar el .htaccess para evitar el hotlink teniendo subdominio exlcusivo para imagenes?

Por Bobosa

69 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.