Lighttpd Rewrites για το Joomla
Εισαγωγή
Ο Lighttpd είναι ο web-server που χρησιμοποιούμε για να παρέχουμε τις υπηρεσίες hosting και ο οποίος σχεδιάστηκε με γνώμονα την ασφάλεια, ταχύτητα, ευελιξία και συμβατότητα με τα περισσότερα λειτουργικά συστήματα. Για τη λειτουργία rewrites, ο Lighttpd δεν χρησιμοποιεί την ίδια σύνταξη με τον Apache, αλλά έχει το δικό του plugin ώστε να κάνει ο ίδιος τα rewrites ή μπορεί να γίνει και χρήση άλλων γλωσσών προγραμματισμού ώστε να κάνουν αυτές τα rewrites. Πριν λίγα χρόνια είχα δημοσιεύσει τα rewrites ώστε να δουλεύει η επιλογή "Search Engine Friendly URLs" στο Joomla και μπορείτε να τα βρείτε στο lighttpd wiki. Για τα συγκεκριμένα rewrites έγινε χρήση του ModMagnet και της γλώσσας προγραμματισμού LUA. Παρακάτω θα σας δείξω βελτιωμένα rewrites ώστε να μην στέλνουν στο index.php του Joomla συγκεκριμένες καταλήξεις (π.χ. jpg, gif, png, css, js).
Πλεονεκτήματα
Για να καταλάβατε το πλεονέκτημα αυτού σκεφτείτε ότι διαγράφετε κάποιες εικόνες. Σκεφτείτε τώρα να επισκεφτεί μια μηχανή αναζήτησης την ιστοσελίδα σας ή κάποιο blog με μεγάλη επισκεψιμότητα χρησιμοποιεί τις εικόνες σας που πλέον δεν υπάρχουν. Με τα παλιά rewrites γίνεται έλεγχος για το εάν υπάρχει κάποιο αρχείο και εάν δεν υπάρχει το στέλνει στο index.php ενώ με τα καινούργια όχι. Έτσι δεν γίνεται υπερφόρτωση της PHP.
Ρυθμίσεις
Θα πρέπει να προσθέσετε τον παρακάτω κώδικα στο αρχείο /usr/local/etc/lighttpd/joomla.lua
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
else
return false
end
end
local prefix = ''
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
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 την παρακάτω ρύθμιση:

