From cfba35a9a0e6ed601ef176bba7dbf1febbd24426 Mon Sep 17 00:00:00 2001 From: KMnO4y_Fish Date: Fri, 5 Dec 2025 18:04:55 +0800 Subject: [PATCH 1/2] Fix replacement logic in replace_server_args Ensure replacement does not use capture indexes. --- htaccess.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htaccess.lua b/htaccess.lua index 7505cb0..26f41f3 100644 --- a/htaccess.lua +++ b/htaccess.lua @@ -806,7 +806,7 @@ local replace_server_vars = function(str, track_used_headers) elseif svar == 'time' then -- %{TIME} replace = os.date('%Y%m%d%H%M%S') end - result = result:gsub('%%{'..org_svar..'}', replace)..'' + result = result:gsub('%%{'..org_svar..'}', replace:gsub('%%', '%%%%')..'')..'' -- make sure no capture indexes are being used as replacement end if track_used_headers then return result, used_headers From cef26822d58d02cbb2035fb62f82a5e362c5135f Mon Sep 17 00:00:00 2001 From: KMnO4y_Fish Date: Fri, 5 Dec 2025 19:31:32 +0800 Subject: [PATCH 2/2] Fix section causing crash when handling requests to directories --- htaccess.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htaccess.lua b/htaccess.lua index 26f41f3..9f1b969 100644 --- a/htaccess.lua +++ b/htaccess.lua @@ -912,7 +912,7 @@ for statement in htaccess:gmatch('[^\r\n]+') do -- TODO: Add match as environment variable -- [^/]+)"> ==> %{env:MATCH_SITENAME} end - elseif request_filename == test or request_filename:match(test:gsub('%.', '%.'):gsub('%?', '.'):gsub('*', '.+')) then + elseif request_filename ~= nil and (request_filename == test or request_filename:match(test:gsub('%.', '%.'):gsub('%?', '.'):gsub('*', '.+'))) then use_block = true end elseif tag_name == 'limit' or tag_name == 'limitexcept' then