4 octobre 2014 · 4 min de lecture
Pour mémoire, une URL (Uniform Resource Locator) est tout simplement l’adresse d’une page internet. Exemple :
https://fr.jeffprod.com/blog/2014/comment-programmer-un-jeu-dechecs
On peut réduire cette adresse en ceci :
https://bit.ly/2wByZJx
Elle vous conduira sur la même page.
Si vous souhaitez accéder à la page ci-dessus, vous préférerez certainement saisir la deuxième dans votre navigateur !
Et si vous devez la diffuser par mail ou sur Twitter (où le nombre de caractères est limité), il est préférable d’utiliser des URL réduites.
Vous avez 3 possibilités :
On peut citer https://bitly.com ou https://tinyurl.com qui sont les plus connus. Il vous suffit de copier-coller un lien pour obtenir son raccourci. Ces sites offrent également divers services comme des statistiques sur le nombre de clics. Il est également possible de personnaliser le lien. Par exemple vous pouvez obtenir https://tinyurl.com/mon-lien
au lieu de https://tinyurl.com/1BFiaHc
.
Et pourquoi pas ? ben allons-y en PHP-MySQL !
Tout d’abord, créons une table dans la base de données :
CREATE TABLE IF NOT EXISTS `myShortUrl` (
`key` char(4) COLLATE latin1_general_cs NOT NULL,
`longURL` varchar(255) COLLATE latin1_general_cs NOT NULL,
`nbclic` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs;
Notez qu’il est possible d’ajouter des champs pour garder une trace de la date de création où la date du dernier clic.
Pour réduire une URL :
LE PRINCIPE :
Concernant la clé, vous aurez compris qu’il est possible d’en générer un nombre déterminé. Celui-ci dépend de la longueur choisie et du nombre de caractères utilisés.
Par exemple, vous voulez fournir un lien du type https://monsite.com/14085
. La clé est ici composée de 5 chiffres. Avec les 10 chiffres (de 0 à 9), vous pourrez donc obtenir 10x10x10x10x10 = 100 000 clés.
Avec les 26 lettres de l’alphabet, pour une clé de 5 caractères on a 11 881 376 possibilités.
Pour une clé de 4 caractères avec 26 lettres en minuscule et 26 en majuscule et 10 chiffres, vous pourrez générer 14 776 336 clés !
Voici une fonction PHP générant une clé de 4 caractères :
<?php
function myTinyGenKey()
{
$num_chars = 4; // longueur de la clé
$i = 0;
$my_keys = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 62 caracs
$keys_length = strlen($my_keys);
$url = "";
while($i<$num_chars)
{
$rand_num = mt_rand(0, ($keys_length-1));
$url .= $my_keys[$rand_num];
$i++;
}
return $url;
}
?>
Lorsqu’une URL réduite est demandée :
LE PRINCIPE :
Notez que chez votre hébergeur, il faudra activer la réécriture d’URL. Cela permettra de saisir https://monsite.com/jK3p
au lieu de https://monsite.com/index.php?key=jK3p
. Voici un exemple de fichier .htaccess
à cet effet :
RewriteEngine On
RewriteRule ^([0-9a-zA-Z]*)$ https://monsite.com/index.php\?key=$1 [L]
Vous l’aurez remarqué, la plupart des sites utilisent leur propre nom de domaine pour la réduction d’URL. On peut noter t.co pour Twitter, oc.cm pour OpenClassrooms, etc. Mais tous ne développent pas un système de réduction.
Bitly (et certainement d’autres) propose une substitution de son nom. Vous pouvez utiliser votre nom de domaine (toto.com), ou un sous-domaine (url.toto.com) en lieu et place de bit.ly.
Par exemple le lien https://monsite.com/1BFiaHc
sera considéré comme https://bit.ly/1BFiaHc
et ceci sans aucun développement de votre part.
Comment fait-on ?
Voici la page Bitly (en anglais) qui explique toute cette manipulation.