PHP - Como crear un acortador de urls en php sobre apache

 
Vista:
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como crear un acortador de urls en php sobre apache

Publicado por xve (6935 intervenciones) el 17/07/2014 08:39:27
Hola, voy a intentar explicar como hacer un acortador de urls similar al de http://adf.ly/27Mjv o http://bit.ly/1pIvCJk.

Primeramente, debemos te intentar tener un dominio lo mas corto posible... para este ejemplo, interpreto que tenemos el dominio link.com

En este dominio link.com en el cual le van a llegar urls del estilo: link.com/asd4d donde "asd4d" tiene que hacer referencia a una pagina web de internet.

En el servidor donde esta el dominio link.com, tienes que tener un archivo .htaccess del tipo:
1
2
3
4
5
6
7
RewriteEngine On
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
 
RewriteRule ^(.*)$ pagina.php?u=$1 [L,NC]

Que lo que hace, es coger esa cadena (asd4d) y enviarla al archivo pagina.php por GET.

Ahora en la pagina.php, nos llegara por GET la variable $_GET["u"] que contendrá la cadena "asd4d"

El siguiente paso, es buscar en una base de datos esa cadena para obtener la url real de internet... imaginemos que esa url es: http://www.lawebdelprogramador.com

Ahora ya sabemos que tenemos que hacer una redirección 301 a http://www.lawebdelprogramador.com.

En este punto, podemos hacer dos cosas, mostrar una pagina web con información o publicidad, para posteriormente con un timeout redireccionar a la página en cuestión, o esperar a que el usuario pulse sobre un botón.
Para nuestro ejemplo, queremos que sea una redirección automática y sin tiempo de espera.

Desde nuestra pagina.php, tendrás que tener el código de buscar la url vinculada a "asd4d" y posteriormente hacer el salto con algo como:
1
2
3
4
<?php
header("HTTP/1.1 301 Moved Permanently");
header("location:http://www.lawebdelprogramador.com");
?>

Espero que os sirva de ayuda...


Para el que este interesado, estas lineas del .htaccess quieren decir:
RewriteCond %{REQUEST_FILENAME} !-f # si no es un archivo existente en el servidor
RewriteCond %{REQUEST_FILENAME} !-d # si no es una carpeta existente en el servidor
RewriteCond %{REQUEST_FILENAME} !-l # si no es un link existente en el servidor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder