# HG changeset patch # User Kim Alvefur # Date 1415119697 -3600 # Node ID e1659f32852e9f201896b31731dd8a02db5b319c # Parent 8437058c422604d57f67cbd176983b3ec2fd376e mod_http: For URLs that end with / or wildcard handlers, add a low-priority redirect from without to with slash diff -r 8437058c4226 -r e1659f32852e plugins/mod_http.lua --- a/plugins/mod_http.lua Mon Oct 27 11:12:08 2014 +0100 +++ b/plugins/mod_http.lua Tue Nov 04 17:48:17 2014 +0100 @@ -45,6 +45,11 @@ :gsub("%$(%w+)", { host = host_module.host }); end +local function redir_handler(event) + event.response.headers.location = event.request.path.."/"; + return 301; +end + local ports_by_scheme = { http = 80, https = 443, }; -- Helper to deduce a module's external URL @@ -99,6 +104,9 @@ local path = event.request.path:sub(base_path_len); return _handler(event, path); end; + module:hook_object_event(server, event_name:sub(1, -3), redir_handler, -1); + elseif event_name:sub(-1, -1) == "/" then + module:hook_object_event(server, event_name:sub(1, -2), redir_handler, -1); end if not app_handlers[event_name] then app_handlers[event_name] = handler;