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!