Foros del Web » Creando para Internet » Diseño web »

Enmascarar URLs

Estas en el tema de Enmascarar URLs en el foro de Diseño web en Foros del Web. Hola tengo un sitio de turismo hecho en PHP que presenta URLs de este tipo: http://www.nanatravelweb.com/ver_det...od=5car975_tra . Quisiera poder "enmascarar" esas URLs usando datos de ...
  #1 (permalink)  
Antiguo 14/03/2011, 16:44
 
Fecha de Ingreso: mayo-2003
Mensajes: 448
Antigüedad: 14 años, 6 meses
Puntos: 5
Enmascarar URLs

Hola tengo un sitio de turismo hecho en PHP que presenta URLs de este tipo: http://www.nanatravelweb.com/ver_det...od=5car975_tra.
Quisiera poder "enmascarar" esas URLs usando datos de la base de datos, como por ejemplo el destino del viaje en lugar de su codigo. Entiendo que esto se puede hacer ¿donde puedo aprender cómo? Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 14/03/2011, 16:53
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Enmascarar URLs

Si no me equivoco se hace usando mod_rewrite preparando el archivo .htaccess en servidores apache.

En google puedes encontrar mucha información.

podrias hacer url´s como por ejemplo:

www.nanatravelweb.com/texto-deseado/

Por cierto, tu web tira errores mysql_fetch_array(), puedes poner un arroba delante de la consulta mysql para que no muestre el error al publico.

Última edición por chechu_; 14/03/2011 a las 16:59
  #3 (permalink)  
Antiguo 14/03/2011, 16:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 6 meses
Puntos: 2122
Tema movido desde PHP a Web general
  #4 (permalink)  
Antiguo 14/03/2011, 18:45
 
Fecha de Ingreso: mayo-2003
Mensajes: 448
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Enmascarar URLs

Bien, no sabía nada del tema, ya he leído sobre mod_rewrite en el archivo .htaccess en servidores apache, y entonces por lo que veo NO hay una forma te tomar datos de mi base de datos para usarlos en las URLS ¿no?
Pensé que esto se podía hacer con PHP, pero veo que no tiene nada que ver... ¿verdad?

Desde ya gracias por los datos.
  #5 (permalink)  
Antiguo 14/03/2011, 19:54
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 12 años, 5 meses
Puntos: 23
Respuesta: Enmascarar URLs

Hola,

Mirá, yo lo he realizado modificando el .htaccess con algo por el estilo:

Código Apache:
Ver original
  1. RewriteEngine on
  2. RewriteRule ^([^/\.]+)/?$ /index.php?page=$1 [L]
  3. RewriteRule ^ carpeta/([^/\.]+)/?$ carpeta/$1.php [L]

Donde "carpeta" es la carpeta que necesitás realizar éste funcionamiento.
Espero que tengas suerte.

Un saludo.
__________________
Freelance - Aplicaciones Web
  #6 (permalink)  
Antiguo 15/03/2011, 14:32
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Enmascarar URLs

Cita:
Iniciado por Tomas_Liendo Ver Mensaje
Bien, no sabía nada del tema, ya he leído sobre mod_rewrite en el archivo .htaccess en servidores apache, y entonces por lo que veo NO hay una forma te tomar datos de mi base de datos para usarlos en las URLS ¿no?
Pensé que esto se podía hacer con PHP, pero veo que no tiene nada que ver... ¿verdad?

Desde ya gracias por los datos.
Si hay forma de tomar los datos, tu pones en la url lo que necesites, tomando los datos de la bd o de donde quieras teniendo en el .htaccess las expresiones regulares necesarias.

por ejemplo:

RewriteEngine on
RewriteRule (carpeta)/$ /index.php?page=$1

La url seria

www.tuweb.com/carpeta/5

y te yevaria a www.tuweb.com/index.php?page=5

mostrando solo www.tuweb.com/carpeta/5

Si siges pensando que no hay forma de hacerlo, sera que no he entendido la pregunta.

Última edición por chechu_; 15/03/2011 a las 19:19
  #7 (permalink)  
Antiguo 16/03/2011, 16:09
 
Fecha de Ingreso: mayo-2003
Mensajes: 448
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Enmascarar URLs

Debo ser yo el que no había entendido. Creo que ahora sí. Voy a hacer pruebas y volveré a escribir para contarles como me fue. Les agradezo muchísimo la información me ha servido mucho.
  #8 (permalink)  
Antiguo 19/03/2011, 11:05
 
Fecha de Ingreso: mayo-2003
Mensajes: 448
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Enmascarar URLs

Gente gracias a su ayuda he avanzado mucho con el Mod Rewrite. Ya logré crear algunas reglas simples en el .htaccess y funcionan.
La regla que REALMENTE quiero usar en mi sitio me está costando un poco más, por eso los molesto una vez más. Creo que si me dan un ejemplo ya arranco solo.
Lo que yo quiero es crear la regla en el .htaccess que me traduzca (por ejemplo) esta URL:
http://www.guiacordobazonanorte.com/estacion-unquillo-locales-comerciales-Grido%20Premium-46.html
En esta (que es la real digamos):
http://www.guiacordobazonanorte.com/estacion-unquillo-locales-comerciales.php?comercio=46

Ingrese esto en el .htaccess pero NO funciona:
AddHandler x-httpd-php5 .php
#
Options +FollowSymLinks
RewriteEngine on
RewriteRule estacion-unquillo-locales-comerciales-*-(.*).html/ estacion-unquillo-locales-comerciales.php?comercio=$1
RewriteRule estacion-unquillo-locales-comerciales-*-(.*).html estacion-unquillo-locales-comerciales.php?comercio=$1
  #9 (permalink)  
Antiguo 19/03/2011, 11:51
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Enmascarar URLs

Creo que algo no va bien en tu código.
Prueba con esto

RewriteEngine On

RewriteBase /Directorio_Base/

RewriteCond %{REQUEST_URI} ([-a-zA-Z0-9]*)-([0-9]*).html
RewriteRule ^([-a-zA-Z0-9]*)-([0-9]*).html$ $1.php?comercio=$2

Te explico un poco.
RewriteBase indica el directorio base para los archivos.
RewriteCond %{REQUEST_URI} activa la siguiente línea si se cumplen las condiciones, como un "if" de php.
([-a-zA-Z0-9]*) permite cualquier numero o letra mayúscula o minúscula y "-".
-([0-9]*) separador y ([0-9]*) permite cualquier numero o números que serian enviados por get con el identificador “comercio”.

Creo no haber cometido ningún error, esto es lioso para mí.

Última edición por chechu_; 19/03/2011 a las 12:01
  #10 (permalink)  
Antiguo 19/03/2011, 19:11
 
Fecha de Ingreso: mayo-2003
Mensajes: 448
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Enmascarar URLs

Chechu agradezco muchísimo tu respuesta, la verdad comenzó a funcionar con sólo agregar un punto delante del primer asterisco. O sea el código me quedó así:

AddHandler x-httpd-php5 .php
#
Options +FollowSymLinks
RewriteEngine on
RewriteRule estacion-unquillo-locales-comerciales-.*-(.*).html/ estacion-unquillo-locales-comerciales.php?comercio=$1
RewriteRule estacion-unquillo-locales-comerciales-.*-(.*).html estacion-unquillo-locales-comerciales.php?comercio=$1

y funciona bien!! Gracias a todos por la ayuda.
  #11 (permalink)  
Antiguo 20/03/2011, 04:34
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Enmascarar URLs

Me alegro de que finalmente te sirviese, ahora a practicar expresiones regulares .
Cuando necesites algo más ya sabes dónde estamos.
  #12 (permalink)  
Antiguo 16/02/2012, 13:12
 
Fecha de Ingreso: mayo-2003
Mensajes: 448
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Enmascarar URLs

Perdón por reabrir este tema... (Hace un par de días lo abrí como tema nuevo pero no recibí ninguna respuesta)
Estoy teniendo inconvenientes...

Tengo estas reglas en mi .htaccess:

RewriteRule guiacordobazonanorte-guia-detalle-.*-(.*).html/ guiacordobazonanorte-guia-detalle.php?comercio=$1
RewriteRule guiacordobazonanorte-guia-detalle-.*-(.*).html guiacordobazonanorte-guia-detalle.php?comercio=$1

El problema es que me aparecen indexadas en Google URLs incorrectas, como esta:

http://www.estacionunquillo.com.ar/guiacordobazonanorte-guia-detalle-comercio-california-school-recta-martinolli-zona-recta-martinoli---gauss-idiomas-/guiacordobazonanorte-guia-detalle-comercio-municipalidaddecordoba-cedulonesimpuestos-otraszonasdecordob
a-serviciosparaoficinas-tramites-organismospublicos-3329.html


Cuando la URL correcta debería ser esta:

http://www.estacionunquillo.com.ar/g...icos-3329.html

Si se fijan es como si se hubiesen "pegado" dos URLs una adelante de la otra... No tengo idea por qué Google indexa esto. He revisado mi código PHP y de ninguna manera se arman URLs así... Yo sospecho que el problema lo puede tener el código de mi .htaccess ¿que opinan?
  #13 (permalink)  
Antiguo 16/02/2012, 15:34
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Enmascarar URLs

Así lo hago yo y me va perfect.

Código PHP:
RewriteCond %{REQUEST_URI} (loquequieras)
RewriteRule (loquequieras)-([0-9a-z]*)$ dir/archivo.php?get=$
que en tu caso seria de esta forma.

Código PHP:
RewriteRule guiacordobazonanorte-guia-detalle-(.*)-(.*).html guiacordobazonanorte-guia-detalle.php?comercio=$

Tampoco se por que pones una barra despues de html de esta forma " html/ guiacordobazonanorte "

Pero si no me equivoco google indexa los enlaces que encuentra, no los concatena ni los mezcla, si a ti te valen, deverian funcionarle igual a el, no veo porque le trataria tu .htaccess de forma diferente de como trata tu a navegador ya que mostraria los mismos enlaces a los dos.

¿Has revisado todos los enlaces a esa url en particular?

Creo que es lo que yo haria.

Espero haberte comprendido y que te sirba de ayuda mi consejo...
  #14 (permalink)  
Antiguo 16/02/2012, 15:43
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Enmascarar URLs

Definitivamente, estoy echando un vistazo a tu web y si te sucede esto, creo que tienes algun enlace que va mál y google ha segido este y todos a los de la pagina a donde da que estarian funcionando de forma erronea.
  #15 (permalink)  
Antiguo 16/02/2012, 18:10
 
Fecha de Ingreso: mayo-2003
Mensajes: 448
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Enmascarar URLs

Entonces si interpreto bien lo que me dicen ¿ustedes piensan que el .htaccess no tiene nada que ver en esto?

Chechu a que te refieres con ¿Has revisado todos los enlaces a esa url en particular? ¿Tengo alguna forma automatizada de revisar los enlaces a esa url?

Lo del " html/ guiacordobazonanorte " lo tome de un ejemplo que baje por ahi. Lo hacian asi... ¿piensas que esto puede estar causandome el problema?

¡¡Estoy un poco perdido no entiendo de donde salen esas URLs donde parecen haber dos comercios pegados!!
  #16 (permalink)  
Antiguo 17/02/2012, 08:21
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Enmascarar URLs

Lo que pienso es que el error viene del .htaccess seguro, lo cual no quiere decir que esté funcionando mal, es decir, si siges la url que da error, podrás ver que todos los enlaces que hay en la pagina funcionan igual (erroneamente), por lo que si has revisado el codigo y funciona correctamente, puede ser que en algun momento google aya indexado la url erronea y aya segido los enlaces que esta tenía y almacenandolos en su base de datos como validos, por lo que lo segira haciendo mientras esos enlaces funcionen.

Todo esto yeva a que google está indexando el doble de paginas de las que deberia y si no quieres que siga haciendolo, la unica solución que veo es hacer mediante el propio .htaccess o como tu consideres adecuado que las paginas erroneas no funcionen o se redireccionen a las correctas.


¿Me e explicado?
  #17 (permalink)  
Antiguo 17/02/2012, 09:25
 
Fecha de Ingreso: mayo-2003
Mensajes: 448
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Enmascarar URLs

Chechu_ te has explicado perfectamente!!! Ahora entendí.

Entonces ¿que tal si creo una regla en el .htaccess que redireccione a una página inexistente cualquier URL que contenga el caracter / dado que ese caracter no debería ni figurar en mis URLs realmente no entiendo de donde salio.

¿Tal vez de esta regla que tenía el .htaccess?: RewriteRule guiacordobazonanorte-guia-detalle-.*-(.*).html/ guiacordobazonanorte-guia-detalle.php?comercio=$1

Obviamente esta regla ya la desactivé.

Entonces si Google ve que esas URLs no llevan a ningún lado las terminará borrando de su base de datos ¿estoy en lo cierto?
  #18 (permalink)  
Antiguo 17/02/2012, 15:08
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Enmascarar URLs

Si esto es para ti una solución hazlo.

Todo esto lo estamos comentando basandonos en que el codigo está funcinando bien puesto que lo has repasado.

Si, en teoria google eliminaria las urls que no dirijan a ninguna parte.
  #19 (permalink)  
Antiguo 17/02/2012, 16:53
 
Fecha de Ingreso: mayo-2003
Mensajes: 448
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Enmascarar URLs

Bueno voy a intentar esa solución. Escribí en mi .htaccess una regla así:

RewriteRule guiacordobazonanorte-guia-detalle-(.*)/(.*).html error.html

Por supuesto la página error.html no existe de manera de generar un error 404 que es lo que Google recomeinda para lograr quitar del índice una URL.

El problema es cuando activo la regla para las URLs correctas:

RewriteRule guiacordobazonanorte-guia-detalle-.*-(.*).html guiacordobazonanorte-guia-detalle.php?comercio=$1

Vuelvo al problema inicial ya que las URLs incorrectas también cumplen esta regla y vuelven a funcionar.

Supongo que aquí tendría que usar un RewriteCond que entendí que funciona como una especie de if. He leído el tutorial de RewriteCond en la página de Apache pero ni por casualidad logro escribir la condición que necesito.

Yo necesito algo como decir:

Si la URL contiene un caracter / aplicar esta regla
RewriteRule guiacordobazonanorte-guia-detalle-(.*)/(.*).html error.html
Caso contrario aplicar esta otra
RewriteRule guiacordobazonanorte-guia-detalle-.*-(.*).html guiacordobazonanorte-guia-detalle.php?comercio=$1

Creo que es la última ayuda que necesitaría, de ante mano muchas gracias por su tiempo.
  #20 (permalink)  
Antiguo 17/02/2012, 17:40
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Enmascarar URLs

Repasa esto ¿vale?

RewriteCond %{REQUEST_URI} guiacordobazonanorte-guia-detalle-(.*)/(.*).html
RewriteRule ^guiacordobazonanorte-guia-detalle-(.*)/(.*).html$ error.html

REQUEST_URI haria que actue solo cuando coincida la url.

Pide toda la ayuda que necesites, mientras nadie se moleste por retomar temas antiguos...
  #21 (permalink)  
Antiguo 18/02/2012, 07:36
 
Fecha de Ingreso: mayo-2003
Mensajes: 448
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Enmascarar URLs

Muchísimas gracias chechu ahí logré que las URLs incorrectas no funcionen y las otras sí. El código del .htaccess me quedó así:

RewriteCond %{REQUEST_URI} guiacordobazonanorte-guia-detalle-(.*)/(.*).html
RewriteRule ^guiacordobazonanorte-guia-detalle-(.*)/(.*).html$ error.html

RewriteCond %{REQUEST_URI} !guiacordobazonanorte-guia-detalle-(.*)/(.*).html
RewriteRule guiacordobazonanorte-guia-detalle-.*-(.*).html guiacordobazonanorte-guia-detalle.php?comercio=$1

Agregué un símbolo ! delante de la condición que tu escribiste para lograr la condición inversa. O sea que las URLs que NO contienen el caracter / funcionen.
Lo dejo por si a alguna otra persona le sirve esto.

De todas maneras me preocupa un poco el tema así que voy seguir investigando de dónde se pueden haber generado esas URLs inválidas. Todavía no lo comprendo bien.
  #22 (permalink)  
Antiguo 18/02/2012, 08:01
Avatar de chechu_  
Fecha de Ingreso: mayo-2007
Mensajes: 282
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Enmascarar URLs

Me alegra mucho haber podido ayudarte.

Lo del el simbolo (!) me sirbe por ejemplo a mi.

Hace mucho estube buscando como hacer el efecto inverso en las expresiones regulares para el .htaccess, por ejemplo y nunca pude encontrarlo, mira por donde hoy lo he averiguado. Más vale tarde que nunca...

Etiquetas: enmascarar, php, 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 02:03.