[[!meta title="Mixing redirects and rewrites with lighttpd and Plone"]] ## The situation As you may already know, [[I am|blog/restart-to-write-news]] [[migrating|blog/migration-1-configs]] [[many of|migration-2-freebsd-raid-monitoring-foss]] [[my websites|migration-3-ccollect]] into this one. Today I also began to redirect stuff from my previous personal website, http://nico.schottelius.org. I am (still) running [Plone](http://www.plone.org) on that site, behind [lighttpd](http://www.lighttpd.net/). The configuration of lighttpd looks like this: $HTTP["host"] =~ "^(nico|nico2)\.schottelius\.org$" { url.rewrite-once = ( "^/(.*)" => "/VirtualHostBase/http/nico.schottelius.org/cms/VirtualHostRoot/$1" ) var.logdir = "/home/server/www/nico/nico.schottelius.org/logs/" accesslog.filename = logdir + "access.log" proxy.server = ( "" => ( ( "host" => "192.168.6.2", "port" => 8082 ), ( "host" => "192.168.6.2", "port" => 8083 ) )) } ([[a more detailled version can be found here|configs/lighttpd-zope-http-and-https]]) ## The idea Now I created a new [[about page here|about]] and want to redirect the old URLs **"^/ueber/nico-schottelius$"** and **"^/about/nico-schottelius$"** from the Plone site to it. First I tried the normal redirect like this: url.redirect = ( "^/ueber/nico-schottelius$" => "http://www.nico.schottelius.org/about/", "^/about/nico-schottelius$" => "http://www.nico.schottelius.org/about/" ) ## The solution Unfortunately, this did not work. You may already have spotted the bug... The correct way to redirect pages from lighttpd in front of [Zope](http://www.zope.org), which does ***rewriting*** is to match on the **rewritten** path! Thus, the following code does the [correct redirect](http://nico.schottelius.org/about/nico-schottelius): url.redirect = ( "^/VirtualHostBase/http/nico.schottelius.org/cms/VirtualHostRoot/ueber/nico-schottelius$" => "http://www.nico.schottelius.org/about/", "^/VirtualHostBase/http/nico.schottelius.org/cms/VirtualHostRoot/about/nico-schottelius$" => "http://www.nico.schottelius.org/about/" ) You can use [curl](http://curl.haxx.se) to verify the redirect: [22:54] ikn% curl -i http://nico.schottelius.org/about/nico-schottelius HTTP/1.1 301 Moved Permanently Location: http://www.nico.schottelius.org/about/ Content-Length: 0 Date: Mon, 22 Jun 2009 21:01:39 GMT Server: lighttpd/1.4.19 [[!tag lighttpd plone]]