Lighttpd Rewrites για το OpenCart

Εισαγωγή

Ο Lighttpd είναι ο web-server που χρησιμοποιούμε για να παρέχουμε τις υπηρεσίες hosting και ο οποίος σχεδιάστηκε με γνώμονα την ασφάλεια, ταχύτητα, ευελιξία και συμβατότητα με τα περισσότερα λειτουργικά συστήματα. Για τη λειτουργία rewrites, ο Lighttpd δεν χρησιμοποιεί την ίδια σύνταξη με τον Apache, αλλά έχει το δικό του plugin ώστε να κάνει ο ίδιος τα rewrites ή μπορεί να γίνει και χρήση άλλων γλωσσών προγραμματισμού ώστε να κάνουν αυτές τα rewrites. Για τα συγκεκριμένα rewrites έγινε χρήση του ModMagnet και της γλώσσας προγραμματισμού LUA.

Ρυθμίσεις

Θα πρέπει να προσθέσετε τον παρακάτω κώδικα στο αρχείο /usr/local/etc/lighttpd/opencart.lua

View source
local prefix = ''
 
function file_exists(path)
  local attr = lighty.stat(path)
  if (attr) then
      return true
  else
      return false
  end
end
 
function removePrefix(str, prefix)
  return str:sub(1,#prefix+1) == prefix.."/" and str:sub(#prefix+2)
end
 
function file_excludes(filename)
local extensions = {jpg = true; gif = true; png = true; jpeg = true; js = true; css = true; txt = true};
        if extensions[(filename:match"%.(.-)$" or ""):lower()] then
                return true
        elseif filename:find"^/404.php$" then
                return true
        else
                return false
        end
end
 
if (not file_excludes(lighty.env["physical.rel-path"])) then
  if (not file_exists(lighty.env["physical.path"])) then
    request_uri = removePrefix(lighty.env["uri.path"], prefix)
    if request_uri then
      lighty.env["uri.path"]          = prefix .. "/index.php"
      local uriquery = lighty.env["uri.query"] or ""
      lighty.env["uri.query"] = uriquery .. (uriquery ~= "" and "&" or "") .. "_route_=" .. request_uri
      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
  end
end

και στη συνέχεια να προσθέσετε στο lighttpd.conf την παρακάτω ρύθμιση:

View source
$HTTP["url"] !~ "^/(|index.html|xcache-admin|awstatsclasses|awstatsicons|awstatscss|awstats|webmail|phpmyadmin)(/|$)" {
index-file.names = ( "index.php" )
magnet.attract-physical-path-to = ( "/usr/local/etc/lighttpd/opencart.lua" )