LandingBrandingstable · v1.0.4★ 0released Jun 5, 2026
Alternative Index
Turn the YOURLS root into a Linktree-style profile page.
Overview
Alternative Index replaces the default YOURLS root page with a customizable profile page: social links, featured content and custom branding. An elegant way to reuse your shortener's domain.
Key features
- ●Linktree-style profile page on the domain root.
- ●Configurable social links and featured content.
- ●Custom branding: logo, colors, copy.
- ●No external dependencies or third-party services.
Quick install
1cd user/plugins
2git clone https://github.com/gioxx/YOURLS-AlternativeIndex
3# Activate 'Alternative Index' from the admin panel
YOURLS min1.7.9+
PHP compat7.4 / 8.x
If YOURLS doesn't have write permissions on the plugins directory, Plugin Manager will show an error like “Automatic installation is not possible because YOURLS cannot write to …/user/plugins”. In that case you can install manually over SSH — run these commands inside your plugins directory:
SSH
1wget -O YOURLS-AlternativeIndex-1.0.4.zip "https://api.github.com/repos/gioxx/YOURLS-AlternativeIndex/zipball/1.0.4"
2unzip YOURLS-AlternativeIndex-1.0.4.zip
3rm -rf YOURLS-AlternativeIndex/
4mv gioxx-YOURLS-AlternativeIndex-*/ YOURLS-AlternativeIndex/
5rm YOURLS-AlternativeIndex-1.0.4.zip
Alternatively, download the ZIP above, extract it locally and upload the folder via FTP/SFTP.
Changelog
What's changed
- Full i18n: all visible admin panel strings are now wrapped in `yourls__()` — panel headings, field labels, hints, toggle labels, button text, flash messages, error messages
- Complete Italian locale: `languages/yourls-alternative-index-it_IT.po` + `.mo` with 70 translated strings covering the entire admin UI
- Italian menu label: the plugin link in YOURLS admin reads Pagina profilo alternativa (the plugin name YOURLS Alternative Index is unchanged everywhere else)
- Update notice: banner strings (New version available, View details on GitHub) are now also translatable
- Boot function: single `yai_boot()` on `plugins_loaded` guarantees the textdomain is loaded before any `yourls__()` call
- Update check: simplified per-request static cache (no persistent DB layer)