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 ttulo en url amigable?

hola estoy desarrollando una pagina web en php y necesito algun tipo de cdigo que me convierta el titulo de los artculos en url amigables para el tema de seo posicionamiento etctera

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
2696
Visitas
3
Resp
Por phpros hace 49 meses
Principiante

Respuesta #1

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 artculos que se llame seoUrl y que sea tipo text.

Agregar noticia:
Donde guardas la noticia debes de tener una funcin 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 funcin (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 artculos para que funcione, por ejemplo:
<a href="articulo/<?php echo $articulo['seoUrl'] ?>"><?php  echo $articulo['nombre'] ?></a>
.htaccess:
El cdigo de este archivo debera 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 49 meses
Experto

Respuesta #2

puedes utilizar una funcin php para remplazar los espacios con guiones ademas de remplazar los caracteres extraos de lo contrario no podras utilizar el ttulo como una url

ejemplo
<?php 

//Funcin 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 aadir una cancin a un repositorio';?>

<?php echo seo_url($cadena);?>
0
Puntos
Por alber hace 49 meses
Administrador

Respuesta #3

muy buena respuesta jonni09lo
0
Puntos
Por alber hace 49 meses
Administrador

Relaccionados

Para comentar Inicia sesión o Registrate
Utilizamos cookies para mejorar la navegación en el sitio. Más información Aceptar