Lighttpd and wordpress setup clean SEO friendly URLs

Posted on in Categories Howto, lighttpd last updated October 16, 2006
Lighttpd logo

By default WordPress uses web URIs which have question marks and lots of numbers in them; however WordPress offers you the ability to create a custom URI structure for your permalinks and archives. This can improve the aesthetics, usability, and forward-compatibility of your links.

Apache has .htaccess file to setup clean SEO friendly URLs using mod_rewrite module. Similarly. Lighttpd can be use mod_rewrite for writing out clean SEO friendly URLs.

Task: Single wordpress blog (documentroot) and SEO URLS

Let us assume that your blog is hosted at http://theos.in (i.e. no subdirectory) and your want pretty urls.

=> Login to your wordpress admin account

=> Go to Options > PermaLinks

=> Now select URL structure as per your need.
For example Date and name based Permalink Structure should be set as follows (remove the default /index.php/%year%/%monthnum%/%day%/%postname%/):
/%year%/%monthnum%/%day%/%postname%/

=> Click on Update Permalink structure button to save the changes.

=> Now open your lighttpd configuration file
# vi /etc/lighttpd/lighttpd.conf

=> Locate your virtual hosting configuration for your domain (theos.in) and aftter server.document-root add following line:
server.error-handler-404 = "/index.php?error=404"

At the end your configuration should look as follows:
$SERVER["socket"] == "203.xx.xx.xx:80" {
server.document-root = "/home/lighttpd/theos.in/http"
server.errorlog = "/var/log/lighttpd/theos.in/error.log"
accesslog.filename = "/var/log/lighttpd/theos.in/access.log"
server.error-handler-404 = "/index.php?error=404"
}

Save and close the file. Restart lighttpd:
# /etc/init.d/lighttpd

Task: Multiple wordpress blogs single documentroot and SEO URLS

Let us assume that you have multiple blogs hosted under single document root called /home/lighttpd/ as follows:
/home/lighttpd/blog1 (http://theos.in/blog1)
/home/lighttpd/blog2 (http://theos.in/blog1)

….
..

First, Login to both blogs and setup Permalink structure as per your requirements. Open /etc/lighttpd/lighttpd.conf file:
# vi /etc/lighttpd/lighttpd.conf

Find your domains configuration section and append lines as follows:
$HTTP["url"] =~ "^/blog1($|/)" { server.error-handler-404 = "/blog1/index.php?error=404" }
$HTTP["url"] =~ "^/blog2($|/)" { server.error-handler-404 = "/blog2/index.php?error=404" }

Save and close the file. Restart lighttpd:
# /etc/init.d/lighttpd restart

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

12 comment

  1. As a webdesigner myself , I’m extremely glad to see that another individual thought to post this topic.

    Quite a few people out there just don’t grasp the concept of what all is needed in this industry, and I think also we are many times underrated
    or taken for granted. Never the less I’m immensely glad to see that you may feel the same way I do , thanks so much for your blog!

Leave a Comment