WordPress updated Permalink Structure, rewrite htaccess

In Webserver by Myrddin0 Comments

After 5 years of writing and getting tired of linking urls that look like http://www.myrddin.de/2011/01/19/enhancement-shaman-soloable-bosses/ I thought it would be nice to get rid of the date part and shorten urls for irrelevant information. The whole purpose of the standard “year/month/day” structure is to make it easier for wordpress to recognize an url as belonging to a post.

Change Permalink Structure

Actually this is quite easy to change. You can go to WordPress Admin -> Settings -> Permalinks -> Custom

And change the default /%year%/%monthnum%/%day%/%postname%/ to /%postname%/

Fix 404 Errors

So far, so good … but … what happens to all the links from external sources/bookmarks? They will all lead to a “404, page not found”-error.  To fix this change the .htaccess file and  and find “RewriteEngine on” now simply add:

RewriteRule /([0-9][0-9][0-9][0-9])$/([0-9][0-9])$/([0-9][0-9])$/(.*)/ /$4/ [R]

This will rewrite all urls that look like this (# = number) /####/##/##/postname/ to /postname//, for example http://www.myrddin.de/2011/02/18/enhancement-shaman-vs-archavon-the-stonewatcher/ to http://www.myrddin.de/enhancement-shaman-vs-archavon-the-stonewatcher/

Update: For some reason this stopped working, But with redirect it is working properly again:

RedirectMatch permanent /([0-9][0-9][0-9][0-9])/([0-9][0-9])/([0-9][0-9])/(.*)/ http://www.myrddin.de/$4/
RedirectMatch permanent /([0-9][0-9][0-9][0-9])/([0-9][0-9])/([0-9][0-9])/(.*) http://www.myrddin.de/$4/

This .htaccess hack is working fine on myrddin.de, old and new display the same page.

Hope this helps!

Leave a Comment