Short URL service in the same directory as WordPress?
June 15, 2011 2:27 PM   Subscribe

How do I create a custom short URL service in the same directory as a WordPress installation?

I have an existing WordPress 3.0 installation for my blog. The current URL structure for individual posts is something like this:

I would like to keep this current structure, but also use my domain (without subdirectories or subdomains) as a "short" URL service where I can shorten not only my own content, but links to other content as well.

So, for example, the URL I posted above would work, but I want something like this to work as well:

Right now I have a YOURLS installation in a subdirectory that works, so my links are something like this:

But I would really like to do away with the subdomain if at all possible. YOURLS claims specifically that it cannot be installed in the same directory as WordPress because they both need .htaccess files.

I'm happy to use whatever method necessary to make this work, even if it's a manual process that's not as pretty as the YOURLS admin interface.

Please let me know if there's anything I need to clarify.
posted by joshrholloway to Computers & Internet (5 answers total) 2 users marked this as a favorite
What you will need to do is write the appropriate mod_rewrite regular expression that can distinguish between a wordpress post URL and a shortened link URL and rewrite the URL to its canonical form. This means modifying the existing .htaccess file that wordpress uses. You'll need to make sure that under whatever scheme you use for link shortening that the URLs can never be confused, for example it looks like you currently have /[A-Za-z0-9]{6}/ and /20[0-9]{2}/ so that's probably sufficient.
posted by Rhomboid at 2:56 PM on June 15, 2011

Rhomboid is dead on. Mod-rewrite may frustrate you a bit, but it's the best solution for this.
posted by bprater at 3:02 PM on June 15, 2011

I cheat this a little bit by putting all my content at, and having my URL shortener at In that's VirtualHost section, <Location />...</Location> I use RewriteEngine:
RewriteEngine on
RewriteRule htdocs/$
RewriteRule htdocs/(..*)$$1 checks to see if it's got the URL in its tied hash, and if it doesn't then it just redirects to$1

Thus redirects to, and gets matched by and redirected to the appropriate place.
posted by straw at 3:10 PM on June 15, 2011

So a little more thinking... How about:

RewriteRule htdocs/([A-Za-z0-9]+)$$1

This would take anything in your main directory that consisted only of upper and lower case letters and numbers, and redirect it to your shortener. That way you can still have and go where they should, but will redirect to your shortener.

I'm not sure how to rewrite that RewriteRule to fit into the .htaccess rather than the Apache site config, but it shouldn't be too hard.
posted by straw at 4:42 PM on June 15, 2011

This WordPress plugin may help (it appears to have been abandoned but it's worth a shot).
posted by cvp at 5:47 PM on June 15, 2011

« Older Neurological Physical Therapist Recommendation!...   |   Describe once, upload everywhere? Newer »
This thread is closed to new comments.