diff options
Diffstat (limited to 'lua/redirect_lower_url.lua')
| -rw-r--r-- | lua/redirect_lower_url.lua | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/lua/redirect_lower_url.lua b/lua/redirect_lower_url.lua index 74ffc30..5aae177 100644 --- a/lua/redirect_lower_url.lua +++ b/lua/redirect_lower_url.lua @@ -2,30 +2,39 @@ local r = lighty.r local a = r.req_attr --- Get the "original" path to avoid being affected by rewrites +-- Get the original path local raw = a["uri.path-raw"] or a["uri.path"] or "/" local orig = a["request.orig-uri"] or raw --- Match two entry points: --- 1) /GpgFrontend/... --- 2) /cgit.cgi/GpgFrontend/... (when the user accessed cgit.cgi directly) +-- Target path local new_path +-- 1) /GpgFrontend/... → /gpgfrontend/... if orig:match("^/GpgFrontend") then new_path = orig:gsub("^/GpgFrontend", "/gpgfrontend") +-- 2) /cgit.cgi/GpgFrontend/... → /gpgfrontend/... (let rewrite add /cgit.cgi once) elseif orig:match("^/cgit%.cgi/GpgFrontend") then - -- Convert /cgit.cgi/GpgFrontend/... to /gpgfrontend/... so rewrite adds /cgit.cgi only once new_path = orig:gsub("^/cgit%.cgi/GpgFrontend", "/gpgfrontend") end +-- If rule matches, convert repo name to lowercase if new_path then + -- Capture repo segment: /gpgfrontend/<repo>/... + new_path = new_path:gsub("^(/gpgfrontend/)([^/]+)", + function(prefix, repo) + return prefix .. repo:lower() + end) + + -- Append query string local q = a["uri.query"] if q and #q > 0 and not new_path:find("%?") then new_path = new_path .. "?" .. q end + r.resp_header["Location"] = new_path return 301 end +-- Visible marker r.resp_header["X-Magnet-Probed"] = "1" return 0
\ No newline at end of file |
