Raccourcir et personnaliser des URL

Par Jean-François GAZET le 4 octobre 2014

Pour mémoire, une URL (Uniform Resource Locator) est tout simplement l’adresse d’une page internet. Exemple : https://fr.jeffprod.com/wjchess/wjchess-3d-captures-ecran.html

On peut réduire cette adresse en ceci : http://bit.ly/1JfpAG6
Elle vous conduira sur la même page.

Pourquoi raccourcir une URL ?

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.

Comment raccourcir une URL ?

Vous avez 3 possibilités :

  • Utiliser un service en ligne;
  • Coder votre propre réducteur d’URL;
  • La solution intermédiaire : associer votre nom de domaine à un service en ligne.

Utiliser un service en ligne

On peut citer http://bitly.com, http://tinyurl.com, ou encore http://goo.gl 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 http://tinyurl.com/mon-lien au lieu de http://tinyurl.com/1BFiaHc.

Codez votre propre réducteur d’URL

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;
  • key est la clé alphanumérique d’une URL, par exemple : 1BFiaHc
  • longURL est la longue URL;
  • nbclic est le compteur de clics d’une URL.

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 :
1. On vérifie dans la base si la longue URL a déjà été réduite, et dans ce cas on retourne sa clé.
2. Dans la négative, on génère une clé alphanumérique (voir la fonction PHP plus bas)
3. On enregistre cette clé dans la table avec la longue URL et un nombre de clics à 0.

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 http://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 :
1. Dans la base de données, on récupère la longue URL associée à la clé donnée.
2. On incrémente le compteur de clics.
3. On redirige sur la longue URL à l’aide de la fonction PHP : header(“Location: $longURL”);

Notez que chez votre hébergeur, il faudra activer la réécriture d’URL. Cela permettra de saisir http://monsite.com/jK3p au lieu de http://monsite.com/index.php?key=jK3p. Voici un exemple de fichier .htaccess à cet effet :

RewriteEngine On  
RewriteRule ^([0-9a-zA-Z]*)$ http://monsite.com/index.php\?key=$1 [L] 

Utiliser un service en ligne avec votre nom de domaine

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 http://monsite.com/1BFiaHc sera considéré comme http://bit.ly/1BFiaHc et ceci sans aucun développement de votre part.

Comment fait-on ?
- achetez un nom de domaine réduit. Pourquoi pas en .im, .cm, .pl…
- saisissez ce nom de domaine dans votre compte Bitly
- modifiez le DNS chez votre hébergeur pour pointer sur celui de Bitly.

Voici la page Bitly (en anglais) qui explique toute cette manipulation.


Partagez cet article


A lire également Tous les articles