Foros del Web » Estrategias Digitales y Negocios Online » SEO »

Urls amigables

Estas en el tema de Urls amigables en el foro de SEO en Foros del Web. Hola, Este tema está hablado en millones de sitios, pero yo, no logro entenderlo, la verdad. El único tutorial que me ha quedado claro es ...
  #1 (permalink)  
Antiguo 06/03/2009, 13:23
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Urls amigables

Hola,

Este tema está hablado en millones de sitios, pero yo, no logro entenderlo, la verdad. El único tutorial que me ha quedado claro es uno sobre cómo hacerlo, pero debo usar sesiones y no me apetece...

Mi duda es si existe una regla GLOBAL para codificar todas las direcciones de mi sitio web, es decir, independientemente de cómo sea:

Código HTML:
index.php?categoria=books
index.php?categoria=books&subcategoria=ana
index.php?seccion=enlaces
index.php?apartado=elquesea


y que quede así automáticamente a través de .htaccess

Código HTML:
categoria/books
categoria/books/ana
seccion/enlaces
apartado/elquesea

No sé si me explico... todas las dudas que he leído por el foro, es resolviendo unas pocas direcciones y tal. Yo busco una regla para .htaccess que codifique todas y cada una de las direcciones que pueda tener en un sitio web. ¿Me ayudáis? :(

Gracias de antemano,
Saludos.
  #2 (permalink)  
Antiguo 09/03/2009, 08:55
Avatar de RBZ
RBZ
Moderador
 
Fecha de Ingreso: noviembre-2005
Ubicación: Sevilla España
Mensajes: 11.559
Antigüedad: 18 años, 5 meses
Puntos: 2053
Respuesta: Urls amigables

Necesitas tener algún tipo de patrón para poder adaptar una regla.

No tener dos URL con los mismos contenidos
__________________
Sevilla monumentos de Sevilla Fotos de la ciudad
ViajeV
  #3 (permalink)  
Antiguo 09/03/2009, 09:25
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola,

Ya sé, pero no es eso a lo que me refiero. Yo busco, por decirlo de alguna manera, el patrón global, para que, sea cual sea la dirección del tipo get (?seccion=Galeria) por ejemplo) me lleve a la dirección del tipo amigable (seccion/galeria)..


¿O tengo que definir en el htaccess y todas y cada una de las direcciones que tenga definidas en el código?
  #4 (permalink)  
Antiguo 09/03/2009, 10:55
Avatar de Adsl5mb  
Fecha de Ingreso: junio-2007
Mensajes: 1.589
Antigüedad: 16 años, 10 meses
Puntos: 34
Respuesta: Urls amigables

Podrías probar http://www.webmaster-toolkit.com/mod...enerator.shtml, en sí existe una regla definida para que pueda redireccionar a la categoría correcta sin tener que especificar cada una.
__________________
Foro: Yelsoft
Blog: Milutilidades
  #5 (permalink)  
Antiguo 09/03/2009, 11:51
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola,

Gracias, creo que es lo que busco. Probaré suerte.
  #6 (permalink)  
Antiguo 09/03/2009, 19:31
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola,

Gracias a todos los que contestaron! Al final pillé el concepto mod_rewrite... y no sabéis cuánto me alegro, jeje.

Pero tengo una nueva duda... ¿Cómo se recogen las variables mediante urls amigables?

Por ejemplo:

Código PHP:
$seccion $_GET['seccion'];

if(
$seccion == "galeria"){
   
// carga un contenido u otro..

Ahora no me recoge nada... como es normal. ¿Alguna idea?
  #7 (permalink)  
Antiguo 09/03/2009, 19:52
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola,

He encontrado algo sobre cómo recogerlas, pero me falla cuando tiene más de 2 variable (seccion/galeria/categoria/books)

Código PHP:
$get $_SERVER['QUERY_STRING'];

  if(!(empty(
$get))){
    
$get explode("&"$get);
    
$get str_replace("="""$get);

    for(
$i=0$i count($get); $i++){
     
$url str_replace("=",""$get[$i]);
    }

   echo 
"<br /><br />" $url;


  #8 (permalink)  
Antiguo 10/03/2009, 00:18
Avatar de internetdominus  
Fecha de Ingreso: noviembre-2005
Ubicación: Estados Unidos
Mensajes: 535
Antigüedad: 18 años, 5 meses
Puntos: 12
Respuesta: Urls amigables

Cita:
Iniciado por d-ART Ver Mensaje
Hola,

Este tema está hablado en millones de sitios, pero yo, no logro entenderlo, la verdad. El único tutorial que me ha quedado claro es uno sobre cómo hacerlo, pero debo usar sesiones y no me apetece...

Mi duda es si existe una regla GLOBAL para codificar todas las direcciones de mi sitio web, es decir, independientemente de cómo sea:

Código HTML:
index.php?categoria=books
index.php?categoria=books&subcategoria=ana
index.php?seccion=enlaces
index.php?apartado=elquesea


y que quede así automáticamente a través de .htaccess

Código HTML:
categoria/books
categoria/books/ana
seccion/enlaces
apartado/elquesea

No sé si me explico... todas las dudas que he leído por el foro, es resolviendo unas pocas direcciones y tal. Yo busco una regla para .htaccess que codifique todas y cada una de las direcciones que pueda tener en un sitio web. ¿Me ayudáis? :(

Gracias de antemano,
Saludos.
Solo te queda aprender Expresiones Regulares y el uso de Mod_Rewrite.

Ahora, si estas pensando que tus rankings mejorara, pues no es asi. GYM ya leen cualquier tipo de urls, recueda que G hasta puede leer dentro de archivos pdf y excel asi que sin ningun problema podra leer un url largo, ridiculo y aburrido, al final lo que le interesa es el titulo y el contenido de la pagina.

Lo que si lograras con mod_rewrite y expresiones regulares es que las personas que buscan vean tu pagina que esta listada en google es la pagina que mas se aproxima a su busqueda porque si busco en G "ropa para ninos" y en tu titulo aparece ropa para ninos y en tu descripcion aparece ropa para ninos y tambien en tu url aparece ropa-para-ninos.htm G lo mostrara todo en negrita haciendo tu pagina una mejor opcion de acuerdo a la busqueda del usuario. Pero, si ya estas bien ranqueado sin necesidad de cambiar los urls pues para que hacer cambios, o como dicen no hay necesidad de reparar lo que no esta malogrado.

Una buena razon para usar mod_rewrite y expresiones regulares es para hacer recordar a una persona un url especifico, por ejemplo si yo llamo a mi novia y le digo, te recomiendo que leas este lindo poema en la pagina www.poemas.com/poemas.php?=id1xlfosllsals777303, seguro que me tranca el telefono, pero si usaras mod_rewrite podria decirle, porque tambien lo recordare mas facilmente, ve y le este poema en: www.poemas.com/poemas.php?=poema45. Logicamente esto tambien ayuda en el momento de un copy paste a un email a enviar a alguien

Ten cuidado con no usar muchos 301 redirects o abusar del .htaccess ya que recargaras tu servidor, se volvera lento y despues tus visitantes se van.

Si es que estas haciendo un website nuevo desde cero pues si utiliza mod_rewrite desde el inicio para que todos tus urls se vean presentables.
  #9 (permalink)  
Antiguo 10/03/2009, 02:46
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola,

Buena respuesta esta, y buen punto de vista. Tienes toda la razón. Ya aprendí lo "básico" de las expresiones regulares (justo para poder hacer las urls amigables), pero mi problema está a la hora de recoger variables $_GET['x'];

¿Cómo se hace?
  #10 (permalink)  
Antiguo 10/03/2009, 02:51
Avatar de facundocorradini
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Argentina
Mensajes: 965
Antigüedad: 16 años, 1 mes
Puntos: 53
Respuesta: Urls amigables

Hola d-ART,

Si hiciste bien las expresiones, entonces las variables de GET deberías recogerlas tal como lo hacías antes.

Por ejemplo, si tienes una regla que "reescribe"
"http://www.tudominio.com/categoria.php?categoria=books" a
"http://www.tudominio.com/categoria/books"

entonces la variable la lees como $_GET["categoria"]

Tal vez tengas algo mal en las reglas.
__________________
<<==== Si una respuesta te ayuda, dale al botón de Karma! Haz fluir la buena onda web!
  #11 (permalink)  
Antiguo 10/03/2009, 02:54
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola,

Entonces seguro que las tengo mal... porque uso $_GET[x'] y nada.. jeje.

Código .htaccess:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine on
  3.  
  4. # 1 variable
  5. RewriteRule ^(.*)/(.*)/$ /?$1=$2
  6.  
  7. # 2 variables
  8. RewriteRule ^(.*)/(.*)/(.*)/$ /?$1=$2&$3=$4
  9.  
  10. # 3 variables
  11. RewriteRule ^(.*)/(.*)/(.*)/(.*)/$ /?$1=$2&$3=$4&$5=$6
  12.  
  13. # 4 variables
  14. RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/$ /?$1=$2&$3=$4&$5=$6&$7=$8

Están mal, ¿a que si?
  #12 (permalink)  
Antiguo 10/03/2009, 03:04
Avatar de facundocorradini
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Argentina
Mensajes: 965
Antigüedad: 16 años, 1 mes
Puntos: 53
Respuesta: Urls amigables

Mmm, no estoy seguro hasta adonde es aplicable la técnica que estás usando (realmente no me llevo bien con los htaccess, menos mal que tengo programadores para hacerlo por mí, jeje), pero si la estructura de tu web es la que mencionas al inicio, entonces creo que deberías agregar index.php.

por ejemplo,

RewriteRule ^(.*)/(.*)/$ /index.php?$1=$2
__________________
<<==== Si una respuesta te ayuda, dale al botón de Karma! Haz fluir la buena onda web!
  #13 (permalink)  
Antiguo 10/03/2009, 03:16
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Urls amigables

Cita:
Iniciado por d-ART Ver Mensaje
Hola,

Entonces seguro que las tengo mal... porque uso $_GET[x'] y nada.. jeje.

Código .htaccess:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine on
  3.  
  4. # 1 variable
  5. RewriteRule ^(.*)/(.*)/$ /?$1=$2
  6.  
  7. # 2 variables
  8. RewriteRule ^(.*)/(.*)/(.*)/$ /?$1=$2&$3=$4
  9.  
  10. # 3 variables
  11. RewriteRule ^(.*)/(.*)/(.*)/(.*)/$ /?$1=$2&$3=$4&$5=$6
  12.  
  13. # 4 variables
  14. RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/$ /?$1=$2&$3=$4&$5=$6&$7=$8

Están mal, ¿a que si?
Vaya, eso es una chapuza en toda regla.

Eso te dará problemas seguramente más adelante. Aparte de estar mal, estás diciendo practicamente que todo vale.

Siguiendo el ejemplo que ponías, puedes hacer algo así:
Código htaccess:
Ver original
  1. RewriteRule ^categoria/(.*)/(.*)$  index.php?categoria=$1&subcategoria=$2 [L,QSA]
  2. RewriteRule ^(categoria|seccion|apartado)/(.*)$  index.php?$1=$2 [L,QSA]

Es importante también el orden en el que pongas las reglas. Si pones QSA, tendrás la opción de enviar como haces normalmente variables desde la URL. Es decir, podrás hacer categoría/books/ana?pagina=2.

Yo siempre digo que en el mod_rewrite hay que maximizar todo lo que se pueda las reglas, para evitar luego que se pueda meter cualquier URL de tu site y quede una página sin contenido o con errores.
  #14 (permalink)  
Antiguo 10/03/2009, 07:35
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola Bonez,

Gracias por tu respuesta. ¿Podríais decirme si estas expresiones están mejor?

Código .htaccess:
Ver original
  1. RewriteRule ^(seccion)/(.*)$  index.php?$1=$2 [L,QSA]
  2. RewriteRule ^(seccion)/(categoria|sub)/(.*)$ index.php?$1=$2&$3=$4 [L,QSA]

Bueno, son de Bonez, yo solo he agregado otra variable más.. funcionar me funciona, pero tampoco sé mucho de urls amigables.


Gracias a todos!
  #15 (permalink)  
Antiguo 11/03/2009, 03:14
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Urls amigables

No entiendo muy bien la segunda regla.

En la primera, no hace falta que pongas sección entre paréntesis. Los paréntesis son si quieres tener en cuenta varias cadenas, como en el segundo caso.

Entonces la primera regla podrías dejarla así:
Código .htaccess:
Ver original
  1. RewriteRule ^seccion/(.*)$  index.php?seccion=$1 [L,QSA]

Y eso, la segunda regla no entiendo bien que quieres hacer.
  #16 (permalink)  
Antiguo 11/03/2009, 03:18
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola,

En la segunda regla lo que intento hacer es que si la dirección es seccion/galeria/categoria/books..

¿entiendes? Pero creo que está mal..
  #17 (permalink)  
Antiguo 11/03/2009, 03:18
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Urls amigables

Por cierto. Yo incluso especificaría las secciones que tengas (a menos que tengas un centenar claro).

Código .htaccess:
Ver original
  1. RewriteRule ^seccion/(books|enlaces|galeria|esto|loOtro)$  index.php?seccion=$1 [L,QSA]
  #18 (permalink)  
Antiguo 11/03/2009, 03:55
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Urls amigables

Cita:
Iniciado por d-ART Ver Mensaje
Hola,

En la segunda regla lo que intento hacer es que si la dirección es seccion/galeria/categoria/books..

¿entiendes? Pero creo que está mal..
Ok. ¿No es mejor que la dirección sea /galeria/books?

En ese caso, sería algo así:
Código .htaccess:
Ver original
  1. RewriteRule ^(galeria|fotos|otra|otraSeccionMas)/(.*)$  index.php?seccion=$1&categoria=$2 [L,QSA]

No hace falta poner "seccion" o "galeria" en la URL. Al fin y al cabo, el sentido de éstas URLs es que sean lo más simples posibles.
  #19 (permalink)  
Antiguo 11/03/2009, 03:59
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola,

Tienes razón. Mil gracias tío ;)
  #20 (permalink)  
Antiguo 11/03/2009, 09:00
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola,

Una pregunta más, ésta un poco más tonta pero...


¿Porqué me ocurre que si pongo la dirección www.midominio.com/seccion/galeria/ se ve bien, y si pongo www.midominio.com/seccion/galeria da error 404? (Véase la barrita del final de la dirección)


Última edición por Daniel Ulczyk; 11/03/2009 a las 09:46 Razón: Quitar URL del dominio de ejemplo
  #21 (permalink)  
Antiguo 11/03/2009, 14:10
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Urls amigables

Es algo muy curioso. A mi también me pasa, y yo lo he solucionado añadiendo una barra al final de la condición, entre (.*) y $, quedando así:
Código .htaccess:
Ver original
  1. RewriteRule ^(galeria|fotos|otra|otraSeccionMas)/(.*)/$  index.php?seccion=$1&categoria=$2 [L,QSA]
Así a mi me funciona de las dos formas, con y sin barra. No me preguntes porqué.
  #22 (permalink)  
Antiguo 13/03/2009, 05:16
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola,

Me ha surgido otra duda..

Si en vez de poner la dirección del tipo: www.midominio.com/seccion/galeria la pongo www.midominio.com/galeria

¿cómo recogo la variable?
Antes la tenía $seccion = $_GET['seccion'];
pero ahora mismo... la verdad es que no sé cómo hacerlo.

Gracias por vuestra ayuda,
Un saludo!


[TEMA RESULETO]

Última edición por dART; 13/03/2009 a las 05:26
  #23 (permalink)  
Antiguo 13/03/2009, 06:26
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Urls amigables

¿Lo resolviste ya?

Si es así, déjalo por aquí como lo hiciste, así otra gente lo puede ver. Que yo muchas veces buscando en Google acabo aquí buscando respuestas XD.

Saludos.
  #24 (permalink)  
Antiguo 13/03/2009, 06:31
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Urls amigables

Hola,

Claro tío, perdona. Yo lo tengo así (que no quiere decir esté bien):

Options +FollowSymLinks
RewriteEngine on

Código .htaccess:
Ver original
  1. # Globales
  2. #-------------------------------------------------------------------------------------------------------------------------------------
  3. RewriteRule ^(actividades|formulario-de-reserva|galeria-de-imagenes|cursos-de-formacion|quienes-somos)/$  index.php?seccion=$1 [L,QSA]
  4. RewriteRule ^(actividades|formulario-de-reserva|galeria-de-imagenes|cursos-de-formacion|quienes-somos)$  index.php?seccion=$1 [L,QSA]
  5.  
  6. # Actividades
  7. #-------------------------------------------------------------------------------------------------------------------------------------
  8. RewriteRule ^(actividades)/(actividades-actuales|proximas-actividades)/$ index.php?seccion=$1&sub=$2
  9. RewriteRule ^(actividades)/(actividades-actuales|proximas-actividades)$ index.php?seccion=$1&sub=$2

Hay dos reglas siempre para cada seccion, que son iguales, lo unico es que una tiene la barra al final / y otra no. Así evito que de error 404 si acceden a

www.dominio.com/seccion/ o www.dominio.com/seccion

creo que está bien... funcionar funciona!!
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 03:14.