Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Como convertir el título en url amigable?

hola estoy desarrollando una pagina web en php y necesito algun tipo de código que me convierta el titulo de los artículos en url amigables para el tema de seo posicionamiento etcétera

no estoy seguro si se hace con php o con un fichero htaccess la verdad es que estoy muy verde en estos temas , bueno gracias
0
Puntos
4763
Visitas
3
Resp
Por phpros hace 122 meses
Principiante
Respuesta #1
puedes utilizar una función php para remplazar los espacios con guiones ademas de remplazar los caracteres extraños de lo contrario no podrías utilizar el título como una url

ejemplo
<?php 

//Función para remplazar cadena
function seo_url($cadena){
	$cadena= utf8_decode($cadena);
    $cadena = str_replace(' ', '-', $cadena);
	$cadena = str_replace('?', '', $cadena);
	$cadena = str_replace('+', '', $cadena);
	$cadena = str_replace(':', '', $cadena);
	$cadena = str_replace('??', '', $cadena);
	$cadena = str_replace('`', '', $cadena);
	$cadena = str_replace('!', '', $cadena);
	$cadena = str_replace('¿', '', $cadena);
	$originales = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ??';
    $modificadas = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr';
    $cadena = strtr($cadena, utf8_decode($originales), $modificadas);
   
    return $cadena;
	
}
?>

<?php 
//Variable que contiene una cadena de texto
$cadena='Como añadir una canción a un repositorio';?>

<?php echo seo_url($cadena);?>
0
Puntos
Por alber hace 122 meses
Administrador
Respuesta #2
Bueno hacer URL amigables es un proceso un poco complejo, ya que implican varias cosas:

Base de datos:
Puedes agregar un campo en la tabla de artículos que se llame seoUrl y que sea tipo text.

Agregar noticia:
Donde guardas la noticia debes de tener una función que de acuerdo al titulo te genere una cadena de texto que tenga el formato de URL amigable (con guiones medios en vez de espacios y sin acentos)

Personalmente uso esta función (puede parecer redundante pero es la que mejores resultados me da):
function sanear_string($toClean) {
	$chars = array(
        '?' => 'S', '?' => 's', 'Ð' => 'Dj','?' => 'Z', '?' => 'z', 'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A',
        'Å' => 'A', 'Æ' => 'A', 'Ç' => 'C', 'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I',
        'Ï' => 'I', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U',
        'Û' => 'U', 'Ü' => 'U', 'Ý' => 'Y', 'Þ' => 'B', 'ß' => 'Ss','à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a',
        'å' => 'a', 'æ' => 'a', 'ç' => 'c', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i',
        'ï' => 'i', 'ð' => 'o', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ø' => 'o', 'ù' => 'u',
        'ú' => 'u', 'û' => 'u', 'ý' => 'y', 'ý' => 'y', 'þ' => 'b', 'ÿ' => 'y', 'ƒ' => 'f', ',' => '',  '.' => '',  ':' => '',
        ';' => '',  '_' => '',  '<' => '',  '>' => '',  '\\'=> '',  'ª' => '',  'º' => '',  '!' => '',  '|' => '',  '"' => '',
        '@' => '',  '·' => '',  '#' => '',  '$' => '',  '~' => '',  '%' => '',  '€' => '',  '&' => '',  '¬' => '',  '/' => '',
        '(' => '',  ')' => '',  '=' => '',  '?' => '',  '\''=> '',  '¿' => '',  '¡' => '',  '`' => '',  '+' => '',  '´' => '',
        'ç' => '',  '^' => '',  '*' => '',  '¨' => '',  'Ç' => '',  '[' => '',  ']' => '',  '{' => '',  '}' => '',  '? '=> '-',
    );
	$toClean = str_replace('&', '-and-', $toClean);
	$toClean = str_replace('.', '', $toClean);
	$toClean = strtolower(strtr($toClean, $chars));
	$toClean = str_replace(' ', '-', $toClean);
	$toClean = str_replace('--', '-', $toClean);
	$toClean = str_replace('--', '-', $toClean);
	$toClean = preg_replace('/[^\w\d_ -]/si', '', $toClean);
	return trim($toClean);
}
Links de las noticias:
No solo basta hacer esto para que funcionen, debes de modificar el links de los artículos para que funcione, por ejemplo:
<a href="articulo/<?php echo $articulo['seoUrl'] ?>"><?php  echo $articulo['nombre'] ?></a>
.htaccess:
El código de este archivo debería ser similar a algo como esto:
## Activar mod_rewrite de Apache para la reescritura de las URL
RewriteEngine On

## URL amigable de los articulos
RewriteRule ^articulo/(.+)$ ruta/archivo.php?seoUrl=$1 [QSA]
De donde debes de tener en claro los formatos y las rutas de los archivos.

Cualquier duda o inquietud no las haces saber

Saludos
6
Puntos
Por jonni09lo hace 122 meses
Experto
Respuesta #3
muy buena respuesta jonni09lo
0
Puntos
Por alber hace 122 meses
Administrador
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate