User Tools

Site Tools


bigace:administration:lighthttpd

BIGACE with LightHTTPD

BIGACE was originally designed for Apache. Out of the Box, BIGACE only support Apache Rewrite Rules, so if you want to use BIGACE URL Rewriting feature with LightHTTPD you have to apply some manual changes.

Thanks to Gizmor for this code!

Requirements:

  • LightHTTPD Version 1.5 (should work with 1.4.X as well, but untested)
  • Activate mod_magnet/mod_rewrite
  • Server compiled with LUA Support

Copy the following Code to your VirtualHost config:

url.rewrite-once = (
	#If a full URL was given, we rewrite everything
	"^/bigace/(.*?)/(.*?)/(.*?)(?:\?{1}(.*?))?$" => "/public/index.php?cmd=$1&id=$2&name=$3&$4",
						
	#Otherwise this should be a Permalink with a unique URL
	"^/bigace/(.*?)(?:\?{1}(.*?))?$" => "/public/index.php?id=$1&$2"
)
		
## If none of the above applied, this was probably a normal filesystem call.
## But if the file or directory does not exist, treat it as permalink			   
magnet.attract-physical-path-to = ("/etc/lighttpd/bigace_rewrite.lua")					    

Additionally you need the the following script, which needs to be saved at /etc/lighttpd/bigace_rewrite.lua:

-- Additional Rewrite-Rule for Bigace-CMS (bigace.de) running on Lighttpd
-- Created by S. Huebener / gizmor.org

-- check if file/folder exists
function file_exists(path)
	local attr = lighty.stat(path)
	
	if(attr) then return true
	else return false
	end
end


local prefix = '/public'
local index_file = '/index.php'

if(not file_exists(lighty.env["physical.path"])) then
	-- file/folder not found

    	local filename = string.sub(lighty.env["uri.path"],2) or ""
    	local query = lighty.env["uri.query"] or ""

    	lighty.env["uri.path"]          = prefix .. index_file
	lighty.env["uri.query"] 		= "id="..filename..(query ~= "" and "&" or "")..query
	lighty.env["physical.rel-path"] = lighty.env["uri.path"]
	lighty.env["request.orig-uri"]  = lighty.env["request.uri"]
	lighty.env["physical.path"]     = lighty.env["physical.doc-root"] .. lighty.env["physical.rel-path"]
end

Note: If you change the filename, you need to change the name in your VirtualHost config as well!

bigace/administration/lighthttpd.txt · Last modified: 2009/07/05 13:03 by kevin