Cargando



Posicionamiento Seo desde PHP y Apache

En este tutorial aprenderemos como realizar URL amigables en PHP, para que nuestro software nos devuelva la URL SEO en base al titulo.


jun 13 2013 11:20
Una parte importante de las técnicas SEO son las URLs amigables se caracterizan por ser faciles de recordar para el usuario, descriptivas acerca del contenido de la web y fáciles de escribir.

En este tutorial aprenderemos como realizar URL amigables en PHP, para que nuestro software nos devuelva la URL SEO en base al titulo.

Para ello crearemos una función PHP que se encargara de traducir una frase que puede ser tomada de una base de datos o introducida en un formulario y convertirla en una url amigable para los buscadores.

La función será:


Imagen enviada


Esta función recorre la frase carácter a carácter y reemplaza aquellos que puedan ser no legibles para los navegadores.

Ejemplo de conversión url:


<? $titulo='inscripción para la competencia';
$url = getUrlAmigable(utf8_decode($titulo)); ?>

<a href=”www.midominio.com/<?= $url?>” /><?=$titulo ?></a>
La url sera
<a href=”www.midominio.com/inscripcion-para-la-competencia”/>inscripción para la competencia</a>


Aquí puedes ver un ejemplo de como seria para twitter y diferentes url amigables

Imagen enviada


Cuando tengamos el código de conversión funcionando necesitamos crear un fichero que se comunicara con el servidor Apache y permita a la web entender nuestras url amigables.

Creamos un archivo simple de texto que se denominara .htaccess en el directorio principal de la web donde este nuestro fichero index.php.

En el fichero .htacess escribimos el siguiente codigo:

# Permitir reescribir url
RewriteEngine On
# La URL es para .htaccess y no es un directorio
RewriteBase /
# La url es ficticia no es un fichero existente en el servidor.
RewriteCond %{REQUEST_FILENAME} !-f
# La url es ficticia no es un directorio existente en el servidor.
RewriteCond %{REQUEST_FILENAME} !-d
# Sino no es un fichero existente y no es un directorio. Accedo al index.php y asigno la url amigable como una variable
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?seccion=$1

Finalmente en el fichero index.php leo esa variable que me envía secretamente el .htacess

Imagen enviada


Un tema importante es la seguridad con este método ya que alguien podría intentar inyectar código a través de index.php?seccion='pagina-malicionsa', para evitar esto creamos un registro de ficheros validos a los que se puede acceder es decir ficheros físicos en el servidor.

Para ello definimos un luego de $seccion=$_GETseccion'], una matriz que contendrá los nombres de los ficheros en el servidor.

<? $lista_secciones = array ("usuarios","login","ayuda","productos","index"); ?>


Así si alguien intenta acceder a una url no valida sera redirigido a una pagina error o si no ha seleccionado ninguna url por defecto ira a una pagina denominada home.php.

También podemos utilizarlo para ir a distintas secciones de la web por ejemplo

URL <a href=”vendo-casa-en-barcelona-im100”>Vendo casa en barcelona</a>

En el .htaccess puedo poner la siguiente regla

#Si la dirección contiene "im" se ejecuta el RewriteRule que habría debajo
RewriteCond %{REQUEST_URI} im-
Rewriterule ^(.+).php ./index.php?seccion=inmuebles&cod=$1

de esta forma estaria pasando como variable el titulo y el código de la casa para luego procesar por base de datos

<a href=”listado-CL50”>Vendo casa en Barcelona</a>

#Si la dirección contiene "CL" se ejecuta el RewriteRule que habría debajo
RewriteCond %{REQUEST_URI} CL
-
Rewriterule ^(.+) ./index.php?seccion=listarclientes&limite=$1

Aquí podría ser listar cliente para el numero 50 o el cliente 50 según la tarea que deseamos realizar luego en nuestra base de datos. Los valores de las variables lo leeremos en el index.php con $GET, es decir para el ultimo caso seria $GET['limite']

¿Te ayudó este Tutorial?


3 Comentarios


Cesar Ortiz
jun 13 2013 11:21
Fenomenelmente explicado. Muchas gracias por compartirlo. Enhorabuena es un Tutorial Pro.

Ernesto Viu
jun 13 2013 13:04
Arrrgh no soy Pro para poder verlo...

Miguel Guerrero
jun 13 2013 13:05

Arrrgh no soy Pro para poder verlo...


Ánimo Ernesto, que veo que sólo te quedan 4 puntos de reputación para llegar a 10, con un tuto decente que envíes o ayudes en preguntas de otros usuarios estás dentro ;)
No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X