/lessnmore

URL shortener with stats and custom urls, a fork of Shaun Inman’s Lessn.

Primary LanguagePHPBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Lessn More 2.1.1

Homepage: http://lessnmore.net
Source/Fork: http://github.com/alanhogan/lessnmore

Lessn More is a free, open-source personal URL shortener.

Features

  • The ability to use custom short URLs (slugs), unlike Lessn
  • A bookmarklet that even supports custom short URLs
  • An API that supports the same commands as the web interface
  • Different auto-shorten modes (optional mixed case),
  • The ability to avoid lookalike characters, and
  • An optional "banned word list" to prevent auto-generating offensive URLs.
  • Support for more shortened URLs than Lessn
  • The ability to add multiple slugs that point to the same long URL, unlike Lessn
  • Trims punctuation from the right of the slug, per best practices

Attention to detail

  • Adding a new slug for a URL already in the database will become the "canonical" short URL, and will be returned if you ask Lessn More (either by API or not) for a short URL to the original resource
  • Lessn More lets you change the character set you want to use to generate short URLs on-the-fly with minimal or no "wasted" or skipped possible slugs, and yet the insertion algorithm is fast. (Not as fast as Lessn 1.0, by necessity, since Lessn 1.0 did not allow custom short URLs; but the worst-case insertion time after upgrade or a switch of insertion algorithms is on the order of O(log(n)) where n is the number of redirections in your database, and the common case is on the order of O(1) (constant time).)
  • Compliant with URL shortener best practices and standards whenever possible
  • An easy migration script will upgrade your database from an existing Lessn migration.

Caveats

  • This shortener is not appropriate when there is a good chance that two or more URLs will be shrunk at the same time. (Simultaneous reads are, of course, fine.)
  • Lessn More 2.0 is a new release and has not been fully tested on databases other than MySQL. YMMV. Please report any issues.
  • Changing settings such as the allowed character set, while a supported use case, should be done seldom, and with deliberation.
  • There is currently a bug in SQLite support.

Requirements

  • PHP 5.1+
  • PHP's PDO
  • MySQL, PostgreSQL, or SQLite (though see this for SQLite support)
  • mod_rewrite or similar rewrite system (see .htaccess)

History

v1.0

Lessn was the original personal URL shortening service, written by Shaun Inman. It required PHP, MySQL, and mod_rewrite.

v1.1

Buttered URLs is a Lessn fork by Jeremy Knope. Buttered URLs added logging, custom URLs, a migration mechanism, and support for more database types.

v2.0

Lessn More is a Buttered URLs fork by Alan Hogan. Lessn More increased the robustness of the insertion algorithm, prevented slug conflicts, updated the bookmarklets, added multiple auto-shorten modes, banned word lists, and enhanced security.

v2.1

Trims punctuation from the right of the slug, per best practices

Legal

Lessn is offered as-is, sans support and without warranty. Copyright © 2009-10 Shaun Inman and contributors. Offered under a BSD-like license; see license.txt.

Installation

Installation instructions are different depending on if you are upgrading or doing a fresh install.

Fresh Install

ONLY follow these instructions if you are not upgrading!

  1. Open c/config.php in a plaintext editor and create a Lessn username and password then enter your database connection details. You may also choose other settings such as authentication salts and a default home page.

  2. For the shortest URLs possible, upload the contents of this directory to your domain's root public folder.

  3. Visit http://doma.in/install.php to create the necessary database tables. (Watch for errors.)

  4. Visit http://doma.in/c/ to log in & start using Lessn More! Be sure to grab the bookmarklets.

NOTE: If your Lessn'd urls aren't working you probably didn't upload the .htaccess file. Enable "Show invisible files" in your FTP application. It's also possible that your host doesn't like the <IfModule> directives; try removed them and just leaving the Rewrite* lines that were wrapped by the <IfModule>. (This seems to happen on 1and1).

Upgrading

If you are upgrading from a previous version of Lessn or ButteredURLs:

Upgrading from Lessn 1.0.0 or 1.0.1

  1. Using a tool like PhpMyAdmin or the MySQL CLI change the checksum index type to INDEX (from UNIQUE).
  2. Continue below with "ALL VERSIONS"

ALL VERSIONS: Upgrading to Lessn More 2.0

  1. You are strongly encouraged to back up your database.
  2. Note some old redirections so you can manually check they still work after upgrading (they should, but hey, it's important).
  3. Manually merge your old configs into the new config file. There will be new options you will want to make decisions about.
  4. Upload all lessn/BU files, excluding config.php, or making sure to use the new one.
  5. Go to http://doma.in/install.php?start=N where N is 2 if upgrading from Lessen 1.0, or
    N is 4 if upgrading from ButteredURLs 1.1.
  6. Test some old known working redirections
  7. Delete install.php.
  8. Grab the new bookmarklets with custom short URL support!

Congratulations. You are running the latest version of Lessn More.

API

You can find API documentation here. It's super simple.

Issues

To report an issue or check known issues, visit the Lessn More issue tracker on GitHub.