diff --git a/Allura/allura/model/index.py b/Allura/allura/model/index.py
index 736a1e1..5772d20 100644
--- a/Allura/allura/model/index.py
+++ b/Allura/allura/model/index.py
@@ -127,22 +127,24 @@
     def from_links(cls, *links):
         '''Convert a sequence of shortlinks to the matching Shortlink objects'''
         if len(links):
+            result = {}
             # Parse all the links
             parsed_links = dict((link, cls._parse_link(link)) for link in links)
             links_by_artifact = defaultdict(list)
             project_ids = set()
-            for link, d in parsed_links.iteritems():
-                project_ids.add(d['project_id'])
-                links_by_artifact[unquote(d['artifact'])].append(d)
+            for link, d in parsed_links.items():
+                if d:
+                    project_ids.add(d['project_id'])
+                    links_by_artifact[unquote(d['artifact'])].append(d)
+                else:
+                    result[link] = parsed_links.pop(link)
             q = cls.query.find(dict(
                     link={'$in': links_by_artifact.keys()},
                     project_id={'$in': list(project_ids)}
                 ), validate=False)
-            result = {}
             matches_by_artifact = dict(
                 (link, list(matches))
                 for link, matches in groupby(q, key=lambda s:unquote(s.link)))
-            result = {}
             for link, d in parsed_links.iteritems():
                 matches = matches_by_artifact.get(unquote(d['artifact']), [])
                 matches = (
diff --git a/Allura/allura/tests/model/test_artifact.py b/Allura/allura/tests/model/test_artifact.py
index b00f77a..0a621a7 100644
--- a/Allura/allura/tests/model/test_artifact.py
+++ b/Allura/allura/tests/model/test_artifact.py
@@ -98,6 +98,7 @@
     assert M.Shortlink.lookup('[TestPage2]')
     assert M.Shortlink.lookup('[wiki:TestPage2]')
     assert M.Shortlink.lookup('[test:wiki:TestPage2]')
+    assert not M.Shortlink.lookup('[test:wiki:TestPage2:foo]')
     assert not M.Shortlink.lookup('[Wiki:TestPage2]')
     assert not M.Shortlink.lookup('[TestPage2_no_such_page]')
     c.project.uninstall_app('wiki')
