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:
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:
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
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


1