diff --git a/lib/banzai/filter/milestone_reference_filter.rb b/lib/banzai/filter/milestone_reference_filter.rb
index 419532717f24c748a6273a5a95ed40b44f36f97d..556087c488077176aa42c931f8871d0ffd3b5856 100644
--- a/lib/banzai/filter/milestone_reference_filter.rb
+++ b/lib/banzai/filter/milestone_reference_filter.rb
@@ -11,6 +11,11 @@ module Banzai
       end
 
       def references_in(text, pattern = Milestone.reference_pattern)
+        # We'll handle here the references that follow the `reference_pattern`.
+        # Other patterns (for example, the link pattern) are handled by the
+        # default implementation.
+        return super(text, pattern) if pattern != Milestone.reference_pattern
+
         text.gsub(pattern) do |match|
           project = project_from_ref($~[:project])
           params = milestone_params($~[:milestone_iid].to_i, $~[:milestone_name])
diff --git a/spec/fixtures/markdown.md.erb b/spec/fixtures/markdown.md.erb
index 6d3bf810c2c5eb20f65ab98f6f8001039919d02d..3e777a5e92b976441ec6f52b8374eadcab8809f4 100644
--- a/spec/fixtures/markdown.md.erb
+++ b/spec/fixtures/markdown.md.erb
@@ -222,6 +222,7 @@ References should be parseable even inside _<%= merge_request.to_reference %>_ e
 - Milestone in another project: <%= xmilestone.to_reference(project) %>
 - Ignored in code: `<%= simple_milestone.to_reference %>`
 - Ignored in links: [Link to <%= simple_milestone.to_reference %>](#milestone-link)
+- Milestone by URL: <%= urls.namespace_project_milestone_url(milestone.project.namespace, milestone.project, milestone) %>
 - Link to milestone by URL: [Milestone](<%= milestone.to_reference %>)
 
 ### Task Lists
diff --git a/spec/support/matchers/markdown_matchers.rb b/spec/support/matchers/markdown_matchers.rb
index 492138716afaa0444ea9c3228b7ccb0581269195..d921f9bb2bc9e4c13e910ceb437826117fcabbce 100644
--- a/spec/support/matchers/markdown_matchers.rb
+++ b/spec/support/matchers/markdown_matchers.rb
@@ -154,7 +154,7 @@ module MarkdownMatchers
     set_default_markdown_messages
 
     match do |actual|
-      expect(actual).to have_selector('a.gfm.gfm-milestone', count: 5)
+      expect(actual).to have_selector('a.gfm.gfm-milestone', count: 6)
     end
   end