diff --git a/lib/modules/Standards.pmod/URI.pike b/lib/modules/Standards.pmod/URI.pike
index 903b2f410c12690aa5b01504cd97861af9c90585..7809b5f6a8c52b1099f85ad79b6927f2daa28f2f 100644
--- a/lib/modules/Standards.pmod/URI.pike
+++ b/lib/modules/Standards.pmod/URI.pike
@@ -263,6 +263,14 @@ void reparse_uri(this_program|string|void base_uri)
   }
   DEBUG("Found scheme %O", scheme);
 
+  // DWIM for "www.cnn.com" style input, when parsed in the context of
+  // base "http://".
+  if( !scheme && this_program::base_uri?->scheme &&
+      !sizeof(this_program::base_uri->authority) )
+  {
+    uri = "//"+uri;
+  }
+
   // Parse authority/login
   //
   // hier-part    = "//" authority path-abempty / path-absolute
diff --git a/lib/modules/Standards.pmod/testsuite.in b/lib/modules/Standards.pmod/testsuite.in
index fcaa3a3eddcb9450fb318b4c981964e955d01544..b6350d5530d53f3fdb5d9b135475ee1142b003ae 100644
--- a/lib/modules/Standards.pmod/testsuite.in
+++ b/lib/modules/Standards.pmod/testsuite.in
@@ -105,6 +105,7 @@ test_equal(Standards.URI("http://www.com/?")->get_http_path_query(),"/?")
 test_equal(Standards.URI("http://www.com/")->get_http_path_query(),"/")
 test_eval_error(Standards.URI("www.com"))
 test_eq((string)Standards.URI("www.com","http://"),"http://www.com")
+test_eq((string)Standards.URI("www.com/x?a=b#y","http://"),"http://www.com/x?a=b#y")
 test_eq((string)Standards.URI("ftp://www.com/x?a=b#y","http://"),"ftp://www.com/x?a=b#y")
 // Some tests of empty path followed by a query.
 test_eq(Standards.URI("http://user:??@host?query")->query, "query")