Yourls avec NGinx
Publié le 15 décembre 2011 - CMS - Hébergement
Dernière mise à jour le 15 décembre 2011
- Article
- |
- Commentaires (0)
- |
- Fichiers attachés (0)
Yourls est un ensemble de petits scripts PHP pour raccourcir les URLs. Il nécessite l'utilisation de la réécriture d'URL, et contient les règles pour Apache. Par contre, pas d'explication pour le serveur web NGinx.

Les règles pour Apache sont les suivantes si Yourls est installé à la racine de l'espace web :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /yourls-loader.php [L]
</IfModule>
Plusieurs méthodes sont fonctionnelles, toujours pour un Yourls répondant à la racine de l'espace web, avec NGinx. Chez moi, seule la version moyenne fonctionne correctement, les deux autres présentent soit un problème avec les liens raccourcis, soit avec les liens de statistiques disponibles dans l'interface d'administration de Yourls.
- La longue
location / {
if (!-f $request_filename){
set $rule_0 1$rule_0;
}
if (!-d $request_filename){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite ^/.* /yourls-loader.php last;
}
}
- La moyenne
if (!-e $request_filename) {
rewrite ^/([0-9a-z]+)/?$ /yourls-go.php?id=$1 last;
rewrite ^/([0-9a-z]+)\+/?$ /yourls-infos.php?id=$1 last;
rewrite ^/([0-9a-z]+)\+all/?$ /yourls-infos.php?id=$1&all=1 last;
}
- La courte
location ~ ^/([\da-z]+)/?$ {
try_files $uri $uri/ /yourls-go.php?id=$1;
}
Ces lignes sont à mettre dans le fichier de configuration du vhost qui accueille Yourls, comme dans l'exemple ci-dessous :
server {
listen 1.2.3.4:80;
server_name domain.tld;
root /var/www/domain.tld/www;
# Static
location / {
index index.html index.htm index.php;
if (-f $request_filename) {
expires max;
break;
}
if (!-e $request_filename) {
rewrite ^/([0-9a-z]+)/?$ /yourls-go.php?id=$1 last;
rewrite ^/([0-9a-z]+)\+/?$ /yourls-infos.php?id=$1 last;
rewrite ^/([0-9a-z]+)\+all/?$ /yourls-infos.php?id=$1&all=1 last;
}
}
access_log /var/log/nginx/domain.tld_access.log combined;
error_log /var/log/nginx/domain.tld_error.log;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
location ~* ^.+\.(jpg|jpeg|png|gif|xml|css|js)$ {
expires 20d;
}
}
Et hop, voilà un Yourls qui marche du tonnerre avec NGinx !

