diff --git a/lib/banzai/filter/wiki_link_filter.rb b/lib/banzai/filter/wiki_link_filter.rb
index 37a2779d453ef397da4e04354486bd69f10d6acd..1bb6d6bba87da3d426b7756d6fe51f8336ed1494 100644
--- a/lib/banzai/filter/wiki_link_filter.rb
+++ b/lib/banzai/filter/wiki_link_filter.rb
@@ -29,7 +29,7 @@ def process_link_attr(html_attr)
         return if html_attr.blank?
 
         html_attr.value = apply_rewrite_rules(html_attr.value)
-      rescue URI::Error
+      rescue URI::Error, Addressable::URI::InvalidURIError
         # noop
       end
 
diff --git a/spec/lib/banzai/filter/wiki_link_filter_spec.rb b/spec/lib/banzai/filter/wiki_link_filter_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..92d88c4172cc95eae172818ad2e4e369fe390d4d
--- /dev/null
+++ b/spec/lib/banzai/filter/wiki_link_filter_spec.rb
@@ -0,0 +1,26 @@
+require 'spec_helper'
+
+describe Banzai::Filter::WikiLinkFilter, lib: true do
+  include FilterSpecHelper
+
+  let(:namespace) { build_stubbed(:namespace, name: "wiki_link_ns") }
+  let(:project)   { build_stubbed(:empty_project, :public, name: "wiki_link_project", namespace: namespace) }
+  let(:user) { double }
+  let(:wiki) { ProjectWiki.new(project, user) }
+
+  it "doesn't rewrite absolute links" do
+    filtered_link = filter("<a href='http://example.com:8000/'>Link</a>", project_wiki: wiki).children[0]
+    expect(filtered_link.attribute('href').value).to eq('http://example.com:8000/')
+  end
+
+  describe "invalid links" do
+    invalid_links = ["http://:8080", "http://", "http://:8080/path"]
+
+    invalid_links.each do |invalid_link|
+      it "doesn't rewrite invalid invalid_links like #{invalid_link}" do
+        filtered_link = filter("<a href='#{invalid_link}'>Link</a>", project_wiki: wiki).children[0]
+        expect(filtered_link.attribute('href').value).to eq(invalid_link)
+      end
+    end
+  end
+end