We use the PURL server from OCLC. It allows for simple redirects of a purl to another URL, and "partial redirects" that allow a base portion of a PURL to be replaced with a different base portion, passing the remainder of the PURL as a parameter to a second service.
The PURL server can only replace text at the beginning of the URL, and only a single replacement. For example:
can be redirected to:
This restriction makes the server very fast, but greatly restricts functionality. To improve functionality, all PURLs for objects in the central repository are directed to our custom Purl Resolver.
One drawback of this server is that it is very difficult to delete or modify entries (e.g., to correct typos). People have considered hacking the database to do this, but we do not know whether anyone has been successful. We've never considered the benefits to be worth the anticipated effort. Details: