Vanity URL manager for Apache Web Server

.htaccessapache-2.2

I'm looking for a tool that manages vanity url's for a single domain running on Apache (or IHS – IBM HTTP Server).

What i mean by vanity URL:

  • www.mycompany.com/ProjectA would
    redirect to
    servera.mycompany.com/whatever
  • www.mycompany.com/ProjectB would
    redirect to
    serverb.mycompany.com/another/directory
  • www.mycompany.com/FallCampaign would
    redirect to
    servera.mycompany.com/whatever/offer.html
  • etc etc

The current solution implemented consists of thousands of manually updated directories with php scripts which redirect the user. This has come a maintenance nightmare. Converting this solution to a solution using manually updated .htaccess file(s) is not an option either*.

Ideally, this tool would:

  • work for an apache / IHS web server
  • provide a web interface for users and administrators
  • allow users to create, delete and update vanity urls
  • allow users to specify case sensitivity, or case insensitivity for each vanity url
  • allow users to specify redirects as HTTP 301 (permanent) or HTTP 302 (temporary) for each vanity url
  • allows users to specify each vanity url as permanent (for products) or temporary with a 'take down' date (for marketing campaigns).
  • provide a work flow users to submit vanity url requests, and for others to approve it
  • (as a possible solution) write out a single, managed .htaccess file, provided that the file is validated by the tool prior to pushing them out to the server so that it does not negatively impact the server.
  • (as a possible solution) write out directories with redirects/.htaccess files, but would also manage creating, updating and deleting these directories.
  • possibly use a database backend, or a xml backend.
  • provide a solution that meets these critera in a manner i didn't think of.
  • (optional) provide very simple reports (number of permanent urls, number of temporary urls, upcoming temporary URLS's that are expiring, etc)

* using a single manually edited .htaccess file poses too much of a risk if an error is put into the file, could effect all urls. Multiple .htaccess files, located in directories is the same maintenance nightmare as using php redirects.

Best Answer

I don't know what exactly defines a "maintenance nightmare" in your book, but you could try to go with a dynamic rewriting map in apache:

RewriteEngine on
RewriteMap    vanity-map       prg:/path/to/vanity.pl
RewriteRule   ^/(.*)/(.*)$  /${vanity-map:$1}/$2

vanity.pl could could be a simple perl script (don't forget to set $| = 1;) which gets the first part of the request URL (as outlined above) on STDIN and is supposed to rewrite that - e.g. by querying a database.

Now, that just leaves the frontend. I'm an inexperienced Ruby on Rails programmer (it's just a spare time activity), but I think, if it doesn't need to look pretty, even I could write an application that authenticates a user, lets him create a rewriting and shows that up for approval to some IT guys/$WHATEVER in much less than a week, so I don't think any real programmer would have a problem doing that in a few hours. Depending on the database, there might even be frontends readily available which will do the job with only a little customization (php*admin comes to my mind).

This way, you get all the flexibility of a database approach paired with a central source for all redirections. As long as the database's index on the URL part fits in your servers memory, you won't even have to worry about performance.

Related Topic