diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py
index 1cb40116b..e8fa33891 100644
--- a/ietf/doc/tests.py
+++ b/ietf/doc/tests.py
@@ -690,6 +690,14 @@ Man                    Expires September 22, 2015               [Page 3]
         r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=draft.name, rev=draft.rev)))
         self.assertEqual(r.status_code, 200)
 
+        rfc = WgRfcFactory()
+        r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.canonical_name())))
+        self.assertEqual(r.status_code, 200)
+        r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.rfc_number())))
+        self.assertRedirects(r, urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.canonical_name())))
+        r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=f'RFC {rfc.rfc_number()}')))
+        self.assertRedirects(r, urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.canonical_name())))
+
         # expired draft
         draft.set_state(State.objects.get(type="draft", slug="expired"))
 
diff --git a/ietf/doc/urls.py b/ietf/doc/urls.py
index fc4e0d959..f6afcc2db 100644
--- a/ietf/doc/urls.py
+++ b/ietf/doc/urls.py
@@ -66,6 +66,7 @@ urlpatterns = [
     url(r'^html/(?P<name>bcp[0-9]+?)(\.txt|\.html)?/?$', RedirectView.as_view(url=settings.RFC_EDITOR_INFO_BASE_URL+"%(name)s", permanent=False)), 
     url(r'^html/(?P<name>std[0-9]+?)(\.txt|\.html)?/?$', RedirectView.as_view(url=settings.RFC_EDITOR_INFO_BASE_URL+"%(name)s", permanent=False)), 
     url(r'^html/%(name)s(?:-%(rev)s)?(\.txt|\.html)?/?$' % settings.URL_REGEXPS, views_doc.document_html),
+    url(r'^html/(?P<name>[Rr][Ff][Cc] [0-9]+?)(\.txt|\.html)?/?$', views_doc.document_html),
 
     url(r'^all/?$', views_search.index_all_drafts),
     url(r'^active/?$', views_search.index_active_drafts),
diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py
index c1b4a59eb..cc83cb9eb 100644
--- a/ietf/doc/views_doc.py
+++ b/ietf/doc/views_doc.py
@@ -670,6 +670,10 @@ def document_html(request, name, rev=None):
     if rev and not name.startswith('charter-') and re.search('[0-9]{1,2}-[0-9]{2}', rev):
         name = "%s-%s" % (name, rev[:-3])
         rev = rev[-2:]
+    if re.match("^[0-9]+$", name):
+        return redirect('ietf.doc.views_doc.document_html',name=f'rfc{name}')
+    if re.match("^[Rr][Ff][Cc] [0-9]+$",name):
+        return redirect('ietf.doc.views_doc.document_html',name=f'rfc{name[4:]}')
     docs = Document.objects.filter(docalias__name=name)
     if rev and not docs.exists():
         # handle some special cases, like draft-ietf-tsvwg-ieee-802-11