Autor Tema: Sobre url amigables  (Leído 1722 veces)

Desconectado BlackDragon

  • PHPer@ Fijo
  • ***
  • Mensajes: 133
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Sobre url amigables
« en: 08 de Septiembre de 2010, 20:25:55 pm »
Hola, hoy estoy preguntando bastante, pero es que estoy desarrollando una web completa...y quiero hacerla bien.

Lo primero, ¿recomiendan usar url amigables? osea, convertir una url tipo http://www.mipagina.com/noticia.php?id=21  y cosas así a http://www.mipagina.com/noticias/titulo-de-la-noticia ó /21

¿Me explico? ¿Eso se consigue con URL Amigables?

Si alguien pudiera darme unas explicaciones básicas sobre ello u ofrecerme algún tutorial....porque estuve buscando pero no lo entiendo bien.

Saludos

Comunidad PHPeros

Sobre url amigables
« en: 08 de Septiembre de 2010, 20:25:55 pm »

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Sobre url amigables
« Respuesta #1 en: 08 de Septiembre de 2010, 20:43:15 pm »

Las URL amigables son simplemente un htaccess ;)

#Fdo. Physlet

Desconectado BlackDragon

  • PHPer@ Fijo
  • ***
  • Mensajes: 133
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Re:Sobre url amigables
« Respuesta #2 en: 08 de Septiembre de 2010, 20:44:21 pm »
Si, eso lo sé, pero...al ver el código no me aclaro muy bien de como ponerlo ¿o es siempre igual?

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Sobre url amigables
« Respuesta #3 en: 08 de Septiembre de 2010, 20:49:45 pm »

Es siempre igual. Solo debes indicarle al htaccess que archivo modificar la URL y ya ;)

#Fdo. Physlet

Desconectado BlackDragon

  • PHPer@ Fijo
  • ***
  • Mensajes: 133
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Re:Sobre url amigables
« Respuesta #4 en: 08 de Septiembre de 2010, 20:52:53 pm »
Por ejemplo, para un sistema de noticias...¿sería correcto esto?:

RewriteEngine on
RewriteRule ^noticias/(\w+)/?$ noticias.php?id=$1

Desconectado OmaarV

  • PHPero Avanzado
  • ****
  • Mensajes: 304
  • Karma: 20
  • Sexo: Masculino
  • OmarVega
    • Ver Perfil
Re:Sobre url amigables
« Respuesta #5 en: 08 de Septiembre de 2010, 20:58:32 pm »
Las urls amigables te daran mucha fuerza a la hora de que un buscador te encuentre imagina ¿Que entiende mejor un buscador www.pagina.com/new.php?id=21  o www.pagina.com/el-nombre-del-articulo? te recomiendo las url's amigables

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:Sobre url amigables
« Respuesta #6 en: 09 de Septiembre de 2010, 00:56:28 am »
Las urls amigables son una *****ez si vas a usar web.com/21, la utilidad es que el titulo esté en la URL para que los buscadores la indexen mejor

Desconectado Rastrillox

  • PHPero Experto
  • *****
  • Mensajes: 592
  • Karma: 25
  • Sexo: Masculino
    • Ver Perfil
    • Forhabbo.es
Re:Sobre url amigables
« Respuesta #7 en: 09 de Septiembre de 2010, 00:57:47 am »
Si, segun he escuchado que esto ayuda mucho con el seo...

Desconectado Tope

  • PHPero Experto
  • *****
  • Mensajes: 540
  • Karma: 23
  • Sexo: Masculino
  • Programador PHP
    • Ver Perfil
    • www.Info-Keko.Es
Re:Sobre url amigables
« Respuesta #8 en: 09 de Septiembre de 2010, 01:42:34 am »
Lo mejor es que cuando insertes una noticia, añadas un campo en la DB llamado "url" y al cual deberias hacerle lo siguiente:

"url" sería el título de la noticia, pero pasando por varios "filtros", que serían:
- Eliminar cualquier acento, diéresis, comilla y Ñ
- Cambiar espacios por guiones
- Comprobar que no queden dos guiones seguidos o algo como "_-_" o "-_-" ni nada por el estilo, si los hubiere, se borran, o los remplazas.
- Marcar una longitud máxima, con substr :P

Así siempre tendrás una URL amigable y si cambias el título por ejemplo, pues la URL sigue siendo la misma.
También puedes hacer el sitemap generado a través de php/mysql para que muestre las URLs de las noticias.

Un saludo
Un Saludo, Tope >> Programador FIJO en PHPeros

Desconectado OmaarV

  • PHPero Avanzado
  • ****
  • Mensajes: 304
  • Karma: 20
  • Sexo: Masculino
  • OmarVega
    • Ver Perfil
Re:Sobre url amigables
« Respuesta #9 en: 09 de Septiembre de 2010, 05:06:55 am »
Lo mejor es que cuando insertes una noticia, añadas un campo en la DB llamado "url" y al cual deberias hacerle lo siguiente:

"url" sería el título de la noticia, pero pasando por varios "filtros", que serían:
- Eliminar cualquier acento, diéresis, comilla y Ñ
- Cambiar espacios por guiones
- Comprobar que no queden dos guiones seguidos o algo como "_-_" o "-_-" ni nada por el estilo, si los hubiere, se borran, o los remplazas.
- Marcar una longitud máxima, con substr :P

Así siempre tendrás una URL amigable y si cambias el título por ejemplo, pues la URL sigue siendo la misma.
También puedes hacer el sitemap generado a través de php/mysql para que muestre las URLs de las noticias.

Un saludo

Lo que tu te refieres se conoce en los bajos mundos como "slug", debes tener un campo para ella claro.

Código: [Seleccionar]
function slug($str)
    {
        $str = strtolower(trim($str));
        $str = preg_replace('/[^a-z0-9-]/', '-', $str);
        $str = preg_replace('/-+/', "-", $str);
        return $str;
    }

Desconectado Tope

  • PHPero Experto
  • *****
  • Mensajes: 540
  • Karma: 23
  • Sexo: Masculino
  • Programador PHP
    • Ver Perfil
    • www.Info-Keko.Es
Re:Sobre url amigables
« Respuesta #10 en: 09 de Septiembre de 2010, 11:21:35 am »
Lo que tu te refieres se conoce en los bajos mundos como "slug", debes tener un campo para ella claro.

Efectivamente, la verdad es que anoche no me acordaba del nombre (y mira que es fácil, con buscar como hacer urls amigables te aparece el nombre...).

Aunque si hace él la función no esta demás, sobretodo yo tendría en cuenta el usar substr..
Un Saludo, Tope >> Programador FIJO en PHPeros

Desconectado BlackDragon

  • PHPer@ Fijo
  • ***
  • Mensajes: 133
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Re:Sobre url amigables
« Respuesta #11 en: 15 de Septiembre de 2010, 14:36:50 pm »
Usé la función de OmaarV para tener la url limpia y para usar, luego hice el htaccess así:
RewriteEngine on
RewriteRule ^noticias/([^/]*)$ /noticias.php?n=$1

El código de la página es este:

El conectar está arriba, solo traigo...lo que creo necesario.

¿No se puede seguir sacando la url de $_GET? ¿cómo sería?
Código: [Seleccionar]
<?php
include(&#39;funciones.php&#39;);
$n $_GET[&#39;n&#39;];
$query = @mysql_query("SELECT * FROM `noticias` WHERE url = ".$n.""); //Se extraen las noticias en orden reciente
if (@mysql_num_rows($query)) { // Se comprueba si hay alguna noticia publicada
while ($noticia = @mysql_fetch_array($query)) { //Se hace un bucle para mostrar cada noticia una a una
$query1 = @mysql_query("SELECT * FROM `comentarios` WHERE ref = ".$noticia[&#39;id&#39;]."");
echo &#39;<div align="left">
<strong>&#39;.$noticia[&#39;titulo&#39;].&#39;</strong><br>
Fuente: <em><a href="http://www.&#39;.$noticia[&#39;fuente&#39;].&#39;">&#39;.$noticia[&#39;nomfuente&#39;].&#39;</a></em><br>
&#39;.bbcode($noticia[&#39;noticia&#39;]).&#39;<br>
Enviada por <em>&#39;.$noticia[&#39;autor&#39;].&#39;</em> || Fecha: <em>&#39;.$noticia[&#39;fecha&#39;].&#39;</em><br><hr>&#39;;
include("comentar.php");
echo&
#39;</div>&#39;;
}
} else {

echo 
"No hay ninguna noticia publicada";
$error mysql_error();
echo 
$error;
}
@
mysql_free_result($noticia); //Se borran los datos usados
?>

Desconectado BlackDragon

  • PHPer@ Fijo
  • ***
  • Mensajes: 133
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Re:Sobre url amigables
« Respuesta #12 en: 15 de Septiembre de 2010, 15:22:02 pm »
Ya lo arreglé, cambié esto:
$query = @mysql_query("SELECT * FROM `noticias` WHERE url = ".$n.""); //Se extraen las noticias en orden reciente
Por esto:
$query = @mysql_query("SELECT * FROM `noticias` WHERE url = '$n'"); //Se extraen las noticias en orden reciente