diff --git a/lib/banzai/filter/relative_link_filter.rb b/lib/banzai/filter/relative_link_filter.rb
index 5a081125f21dcd67e147f237de4d2ffe7e13ea52..66f166939e416ae1be722e1a609a8c9ea80c3150 100644
--- a/lib/banzai/filter/relative_link_filter.rb
+++ b/lib/banzai/filter/relative_link_filter.rb
@@ -91,7 +91,7 @@ module Banzai
         parts = request_path.split('/')
         parts.pop if path_type(request_path) != 'tree'
 
-        while parts.length > 1 && path.start_with?('../')
+        while path.start_with?('../')
           parts.pop
           path.sub!('../', '')
         end
diff --git a/spec/lib/banzai/filter/relative_link_filter_spec.rb b/spec/lib/banzai/filter/relative_link_filter_spec.rb
index 0b3e5ecbc9fc3c929682e3f79a533cffdf2e0ac8..0e6685f0ffb5751379b17622a7cfac80dc4381e3 100644
--- a/spec/lib/banzai/filter/relative_link_filter_spec.rb
+++ b/spec/lib/banzai/filter/relative_link_filter_spec.rb
@@ -92,6 +92,14 @@ describe Banzai::Filter::RelativeLinkFilter, lib: true do
         to eq "/#{project_path}/blob/#{ref}/doc/api/README.md"
     end
 
+    it 'rebuilds relative URL for a file in the repository root' do
+      relative_link = link('../README.md')
+      doc = filter(relative_link, requested_path: 'doc/some-file.md')
+
+      expect(doc.at_css('a')['href']).
+        to eq "/#{project_path}/blob/#{ref}/README.md"
+    end
+
     it 'rebuilds relative URL for a file in the repo with an anchor' do
       doc = filter(link('README.md#section'))
       expect(doc.at_css('a')['href']).