Yourls : des liens à la racine, mais Yourls dans un dossier

Si comme moi vous avez installé Yourls à la racine de votre siyourlste web et que vous souhaitez le déplacer dans un sous dossier mais en gardant des URL du type http://monsite.com/xyz sachez qu’il existe une technique assez simple et qui fonctionne bien.

Modification de l’arborescence

Tout d’abord, il va falloir modifier l’arborescence de votre FTP. Les fichiers yourls-api.php, yourls-go.php, yourls-infos.php, yourls-loader.php ainsi que les dossiers admin/, css/, images/, includes/, js/, pages/ et user/ doivent être placés dans le nouveau sous dossier qui accueillera Yourls.

Modification du fichier .htaccess

Par défaut, le fichier .htaccess se contente simplement router les toutes les requêtes avec un format bien spécial vers le fichier yourls-loader.php. Le fichier par défaut se présente sous cette forme :

# BEGIN YOURLS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /yourls-loader.php [L]
</IfModule>
# END YOURLS

Afin de faire fonctionner notre système, et que Yourls continue de router les liens minimisés même à la racine il faut modifier le fichier comme ceci :

# BEGIN YOURLS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /yls/yourls-loader.php [L]
RewriteRule ^([0-9A-Za-z]+)/?$ /yls/yourls-go.php?id=$1 [L]
RewriteRule ^([0-9A-Za-z]+)\+/?$ /yls/yourls-infos.php?id=$1 [L]
RewriteRule ^([0-9A-Za-z]+)\+all/?$ /yls/yourls-infos.php?id=$1&all=1 [L]
</IfModule>
# END YOURLS

Modification des fichiers

A partir de là, Yourls pourrait fonctionner à peu près normalement, mais l’interface d’administration a perdu son CSS, son JavaScript et il n’y a plus aucune image. Moche non ?
Il va falloir modifier deux fichiers : config.php (qui se situe dans le dossier user) et functions.php (qui se situe dans includes).

config.php

Dans le fichier config.php, il faut modifier la ligne YOURLS_SITE. Normalement elle doit pointer sur la racine de votre site web (http://monsite.com). Il faut la modifier en rajoutant votre sous-dossier après le /. C’est la seule modification à effectuer au niveau de ce fichier.

functions.php

Il y a un peu plus de travail à effectuer dans ce fichier. En l’explorant un peu, j’ai vite remarqué qu’il y avait plusieurs fois l’appel à la constance YOURLS_SITE du fichier config.php. J’ai cherché sur Internet comment d’autres auraient pu faire pour remplacer efficacement ce YOURLS_SITE en évitant de toucher à trop de fichiers.

Simplement, il suffit d’effectuer un coup de Find… Replace (ou Rechercher… Remplacer) avec votre éditeur favori, et de remplacer YOURLS_SITE par substr(YOURLS_SITE, 0, 15). Le seul chiffre que vous avez à changer, c’est 15. c’est le nombre de lettres que contient votre nom de domaine. Ici, http://os301.fr/ contient 15 lettres, slash compris. 15 en partant de 0. Vous devez changer YOURLS_SITE par ce morceau de code sauf pour les fonctions yourls_admin_url() et yourls_site_url() que vous ne devez absolument pas toucher puisque ce sont des fonctions qui contiennent les liens vers l’administration de votre site.

Conclusion

Maintenant, il ne vous reste qu’à essayer de nouveau, en vous connectant sur votre site avec le sous-domaine, et d’essayer de créer un lien raccourci. N’oubliez pas de modifier l’adresse de votre API sur les différents logiciels susceptibles de faire appel à l’API Yourls.