BuddyPress And Lighttpd

This is a short post that detailing how to fix a problem with the WordPress plugin BuddyPress and Lighttpd.

The problem in question:

Users that register for a site via BuddyPress are sent an email with an account activation link. Upon visiting said link, their account is supposed to be activated thereby verifying their email address. However, with the typical configuration for a WordPress site on Lighttpd (redirecting all 404s to “/index.php”), GET request parameters are not forwarded (as they shouldn’t be, really). Since BuddyPress relies on a GET parameter for the activation key (and it should not do so) this breaks the activation process.

Solution:

The solution to this problem is to catch requests for activations and directly process them through the index.php routing handler. To do so, add an extra bit of configuration to your Lighttpd configuration for the site:

url.rewrite-final = (
  # Enable redirects for account activations that use a GET parameter
  "^/register/activate-account(.*)$" => "/index.php/$1"
)

Note that “/register/activate-account” is local to your BuddyPress configuration. It should match the URL you have configured for said action (i.e. look at an activation email to figure out what to look for).

References:

http://buddypress.org/support/topic/activation-not-possible/
http://redmine.lighttpd.net/issues/660
http://www.crobak.org/2011/01/moving-wordpress-blog-to-lighttpd/