¿Cómo crear URL amigables? Mis URL de paginas salen asi /?p=

  • Autor Autor manxel
  • Fecha de inicio Fecha de inicio

manxel

Eta
SEO
Verificación en dos pasos activada
Verificado por Whatsapp
Hola compañeros del foro,

Quisiera saber como puedo modificar las URL de mi sitio para que se vean amigables. Actualmente mis URL salen asi: www.misitio.com/?p=paginadejemplo cuando deberia verse asi: www.misitio.com/pagina-de-ejemplo

Estoy trabajando en base a twitter bootstrap y en el Index.php encontre estas lineas que modificandolas me lo corrige pero al acceder a la pagina me da error 404

Insertar CODE, HTML o PHP:
[FONT=trebuchet ms]<nav class="navbar navbar-default">
<div class="container">
<div class=navbar-header>
<button type=button class=navbar-toggle data-toggle=collapse data-target=#bs-example-navbar-collapse-1>
<span class=sr-only>Toggle navigation</span>
<span class=icon-bar></span>
<span class=icon-bar></span>
<span class=icon-bar></span>
</button>
<a class=navbar-brand href=./>
<p style=background-color:#333;color:orange;font-size:46px>misitio.com</p>
</a>
</div>
<div class="collapse navbar-collapse" id=bs-example-navbar-collapse-1>
<ul class="nav navbar-nav">
<?php foreach($data["user_pages"] as $page): ?>
[SIZE=3][B]<li><a href="[COLOR=#ff0000]?p=[/COLOR]<?php echo $page["url_name"]; ?>"><?php echo $page["name"]; ?></a></li>[/B]
[/SIZE]<?php endforeach; ?>
</ul>
</div>
</div>
</nav>[/FONT]

He buscado tutoriales donde modificando en el .htaccess se puede lograr una redireccion pero no me funciona.

Agradezco la ayuda si alguien sabe como resolver esto :encouragement:
 
Hola

como dices con el .htaccess se puede,pero tienes que hacer algunos arreglos

primero yo le agregaria un control por ejemplo post o pagina

Insertar CODE, HTML o PHP:
RewriteEngine On
Rewriterule ^post-(.*)$  /?p=$1

despues el link deberia quedar

www.misitio.com/post-pagina-de-ejemplo

pero primero tienes que cambiar el $page["url_name"] con str_replace para formar el link, supongo que estas usando php

y en la pagina que recibes tienes que agregar

<base href="http://www.misitio.com/" />

esto para que carguen el CSS y demas includes

Saludos
 

Gracias por tu ayuda [MENTION=41713]nestornoe[/MENTION] :encouragement: lo probare y comentare si me funciono correctamente.
 
Hola en los comentarios anteriores te dijeron de usar htaccess, para lo que configurar las url, aqui te traigo una funcion en php para transformar el titulo de post o alguna en una url amigable espero te sirva 🙂

PHP:
function url_amigable($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);
}
 
Buenas,
Yo utilizo el siguiente segmente de codigo en los documentos .htaccess y funciona a la perfección espero que te sea util.

PHP:
<IfModule mod_rewrite.c>
    # Activar modo de reescritura
    RewriteEngine On

    # Directorio de instalacion, puede ser necesario si 
    # la aplicacion se ubica en public_html
    #RewriteBase /

    # No permite reescritura si el archivo o directorio existe
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # Para peticiones que no son archivos ni directorios
    # Reescribe a index.php?url=URL
	RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>

Espero que te sea útil.
Estamos a la orden.