Shlink
The definitive self-hosted URL shortener
Alternative to: bitly, tinyurl, rebrandly
v3.5.0
2023-01-28Changed
- Nothing
Added
-
#1557 Added support to dynamically redirect to different long URLs based on the visitor’s device type.
For the moment, only
android,iosanddesktopcan have their own specific long URL, and when the visitor cannot be matched against any of them, the regular long URL will be used.In the future, more granular device types could be added if appropriate (iOS tablet, android table, tablet, mobile phone, Linux, Mac, Windows, etc).
In order to match the visitor’s device, the
User-Agentheader is used. -
#1632 Added amount of bots, non-bots and total visits to the visits summary endpoint.
-
#1633 Added amount of bots, non-bots and total visits to the tag stats endpoint.
-
#1653 Added support for all HTTP methods in short URLs, together with two new redirect status codes, 307 and 308.
Existing Shlink instances will continue to work the same. However, if you decide to set the redirect status codes as 307 or 308, Shlink will also return a redirect for short URLs even when the request method is different from
GET.The status 308 is equivalent to 301, and 307 is equivalent to 302. The difference is that the spec requires the client to respect the original HTTP method when performing the redirect. With 301 and 302, some old clients might perform a
GETrequest during the redirect, regardless the original request method. -
#1662 Added support to provide openswoole-specific config options via env vars prefixed with
OPENSWOOLE_. -
#1389 and #706 Added support for case-insensitive short URLs.
In order to achieve this, a new env var/config option has been implemented (
SHORT_URL_MODE), which allows eitherstrictorloosely.Default value is
strict, but iflooselyis provided, then short URLs will be matched in a case-insensitive way, and new short URLs will be generated with short-codes in lowercase only.
Removed
- Nothing
Fixed
- #1639 Fixed 500 error returned when request body is not valid JSON, instead of a proper descriptive error.