Comunidad de diseño web y desarrollo en internet online

URL amigable con ASP

Citar            
MensajeEscrito el 06 Feb 2011 05:52 pm
Buenas.

Primero decir que como no he visto ningun apartado en el foro donde se hable de ASP pues lo pongo aquí que es lo más parecido.

El caso es que estoy intentando crear un sistema de url amigables con un website que tengo en el que hasta ahora rescataba de la base de datos (access) con las tipicas consultas por el metodo get.

ejemplo: www.url.com?variable1=x&variable2=z

He visto muchos ejemplos y la verdad es que ninguno me convencía al 100% por lo que empecé de 0. La idea con la que yo estoy trabajando es la siguiente:

En el index, he creado un listado de noticias con la cabecera y a penas 3 líneas de cada noticia, después ya cada una tiene un botón de "leer mas" por si alguien quiere leer la noticia entera. El link de cada noticia es de la siguiente estructura:

Código :

http://www.url.com/x/z


Por otro lado, he creado un archivo asp "404.asp" que controla aquellos archivos que no se encuentran, y desde IIS lo he establecido como el archivo por defecto a ejecutar cuando sucede que no se encuentra la URL. Hasta aquí todo correcto.

Bueno, dentro del archivo 404.asp capturo la URL que da fallo con

Código :

Request.ServerVariables("REQUEST_URI")

la cual me devuelve "/x/z" (omitiendo ya de por sí "http://www.url.com".)

Con esa cadena, meto en un array "x" y "z" que son en realidad los parámetros de consulta con los que trabajar y finalmente creo la url a la que transferir la info, a saber:

Código :

Server.Transfer("noticia.asp?variable1="&myArray(0)&"&ID="&myArray(1)")


He estado probando a poner en la cadena rutas absolutas y rutas relativas, y nada, no me devuelve nunca el archivo... el servidor me "escupe": "Se especificó un carácter no válido en el parámetro Path para el método MapPath".

Llevo unas horas en un punto muerto y, la verdad, no se si me he saltado algo que no atino a ver. ¿¿¿Alguna idea???

Por pitger

Claber

201 de clabLevel



Genero:Masculino  

Cáceres

firefox
Citar            
MensajeEscrito el 07 Feb 2011 12:14 pm
Esto se ha convertido en una "mision imposible".

Ahora que me respondan los gurús... si hay alguno porque ¡manda telita!

Al menos dejaré constancia de los impedimentos que se van a encontrar algunos.

1º. Tenía un error (por lo que he podido descubrir). No se pueden pasar parámetros en la URL del server.transfer así que nos olvidamos de "file.asp?variable1=x&variable2=z

2º. Al cargar Request.ServerVariables("REQUEST_URI") sobre una variable, descubrí que estaba en blanco... y dió igual que la cargara en una variable de session, tampoco me hizo nada. Así que no se me ocurre forma alguna de traspasar las variables al archivo .asp de destino, ni por get ni por post.

3º. El p... IIS7 va de pena ya que por mucho que definas la página de error 404, no llega a "efectuar los cambios" y si lo hace te va a devolver siempre una página en blanco. Mis pruebas sobre localhost han sido desesperantes... en el servidor si me devolvía resultados y me mostraba errores, pero entre otros son los del punto 2.

4º. Encontré este enlace : http://www.petralinkfactory.com/2008/08/24/url-amigables-y-iii-asp/ donde el autor nos deja descargar unos archivos de ejemplo de como lo hizo el (eso si, sobre IIS6 porque si prueba con iis7 le prende fuego al PC). El caso es que no funciona porque no carga ni variables, ni includes ni nada de nada.

5º. Alguno dirá. Pues deja asp y vente a php para vivir mejor trabajando menos..... siiiiiiii, lo se, pero esta web en la que quiero implementar esto está en asp, ya tiene mucho trabajo adelantado y empezar de 0 con php llevaría muchisimo tiempo. Aunque a este paso, será la UNICA solución.

En fin, que si a alguien le da por trabajar con este tema, que sepa con qué cositas se va a encontrar, y si alguien consigue algo que yo no, por favor, que deje constancia. Salu2

Por pitger

Claber

201 de clabLevel



Genero:Masculino  

Cáceres

firefox
Citar            
MensajeEscrito el 08 Feb 2011 02:25 pm
bueno y con ASP.net ? creo que tienen manejo de sessiones y cookies y creo tambien saber de que se puede hacer algo como un mod_rewrite de apache ya que lo que estas haciendo es tratar de capturar una variable de un re-direccionamiento

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Feb 2011 07:37 pm
Pues mira tu que a raiz de tu comentario creo haber encontrado la luz!

Me puse a ver lo del mod_rewrite en IIS7 y voilá... accedí a la web de microsoft y concretamente a la sección de IIS y es que después de mucho tiempo, han subido una serie de cambios y novedades para el IIS7 entre las que está el mod_rewrite y que segun he podido leer en otro website, también funciona con asp clasico.

Como comprenderéis, ahora mismo tengo actualizando el IIS7 de mi PC en busca de esos nuevos módulos y funciones. Ahhh, algo que me ha gustado ver (aunque aun no se lo efectivo-valioso que será) es que IIS7 ahora dispone de un instalador de modulos y complementos muy del estilo del repositorio de linux, del instalador de wordpress y otros. Bien está que al menos, si no son pioneros, vayan tomando ideas de los que si lo son.

Ya os contaré en los próximos dias.

Por pitger

Claber

201 de clabLevel



Genero:Masculino  

Cáceres

firefox
Citar            
MensajeEscrito el 09 Feb 2011 07:11 pm
Bueno, pues sigo con mi andadura en solitario.

El caso es que si, hay nuevas noticias con respecto a IIS7 y hay muchísimas cosas nuevas que pintan muy bien, entre ellas un panel exclusivamente orientado a lor rewrite que hará la vida mucho mas facil... pero claro, si tienes tu web en un servidor propio no hay problema porque manejas el IIS a tu antojo, pero en mi caso, dependo de mi proveedor de hosting y a estas alturas aun no han implementado nada de esto así que estoy donde lo dejé.

El caso es que he seguido estudiando el tema, porque soy muy cabezón y no tiro la toalla casi nunca y las consecuencias son éxito o la pérdida de un tiempo muy valioso. Al tema. El caso es que medio he conseguido hacer que funcione, pero no del todo y ahora voy a ver si nuevamente alguien tiene alguna solución.

He hecho que desde la pagina principal se manden los parámetros por post (podría haber sido por get igualmente pero me parece mas limpio)... en el action del formulario genero la ruta deseada, osea : www.miurl.com/variable1/variable2, como es lógico, no se encuentra dicha url por lo que salta al escenario el archivo asignado como manejador del error 404, que oportunamente recoge las variables enviadas por post y las pongo como variables de session.

Tras esto anterior, realizo un server.execute (o server.Transfer, en ambos casos tengo lo mismo) y me devuelve lo que quiero pero sin estilos ni archivos adjuntos.

Voy algo encaminado pero sigo viendo 2 problemas principales que si no se resuelven, esto que he hecho no vale para nada.

1º.-Si alguien escribe directamente en la barra de dirección "www.miurl.com/variable1/variable2" no va a pasar ninguna variable ya que esas se pasaban desde el índex, luego ahi no hay url amigable.

2º.-Debería poder abrir la página de resultados con todos los objetos, imagenes y css correctamente

Llegado a este punto, mi principal gran problema y pregunta para la comunidad es la siguiente: ¿Hay alguna forma de obtener la url amigable? Lo he intentado con los siguientes parámetros y con los siguientes resultados

Request.ServerVariables("URL") --> Me devuelve la url del archivo de control de error 404
Request.ServerVariables("SCRIPT_NAME") --> Lo mismo que la anterior
Request.ServerVariables("HTTP_REFERER") --> Me devuelve la url del archivo anterior al error, osea, el index desde donde se abría la noticia o si alguien puso directamente la url en el navegador, la url que estuviese viendo antes y que puede ser cualquiera.

¿Ideas?

Por pitger

Claber

201 de clabLevel



Genero:Masculino  

Cáceres

firefox
Citar            
MensajeEscrito el 02 Sep 2013 03:33 pm
Buenas tardes...
Me acabo de cruzar con este post buscando información sobre URLs amigables y no sé si es tarde para contestar, ya me dirás tú.

Existen comandos de ASP que no sé si has tenido en cuenta...
Para obtener todos los parámetros enviados en la URL basta con invocar a request.querystring
Con eso podrías obtener lo que intentabas sacar con request.servervariables("URL") de una forma más limpia.
Dices que Server.Transfer("noticia.asp?variable1="&myArray(0)&"&ID="&myArray(1)") no admite parámetros... has probado con response.redirect("noticia.asp?variable1="&myArray(0)&"&ID="&myArray(1)")

Lo único que podría recomendarte es que no utilizases "/" como separador, puede darte problemas al ser utilizado en las URLs como separador de carpetas... prueba a cambiarlo por un guión simple "-"

Si incluyes en un default.asp toda la funcionalidad que te comento anteriormente y lo tienes configurado como documento predeterminado en IIS (que es lo normal) puedes obviarlo en la construcción de la URL, quedándote una URL amigable como la que indicas que necesitas (http://www.myweb.com/?x-y)... no sé si eso sería suficiente para que google nos lo admitiera como amigable...
Lo de la sustitución del 404.asp no lo he probado, pero yo no puedo ir por ese camino, ya que el hosting que tengo contratado no me permite TANTA libertad.

Por oliverporras

0 de clabLevel



 

chrome

 

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