diff --git a/core/modules/link/src/Plugin/migrate/process/FieldLink.php b/core/modules/link/src/Plugin/migrate/process/FieldLink.php
index 8dcf41fb90e341c64085c3f52bd134c5dbfd356b..c3efed474d41e7bf2bc4a7d65bb4dee8f9b31748 100644
--- a/core/modules/link/src/Plugin/migrate/process/FieldLink.php
+++ b/core/modules/link/src/Plugin/migrate/process/FieldLink.php
@@ -59,6 +59,13 @@ public function __construct(array $configuration, $plugin_id, $plugin_definition
    * @see \Drupal\link\Plugin\Field\FieldWidget\LinkWidget::getUserEnteredStringAsUri()
    */
   protected function canonicalizeUri($uri) {
+    // If the path starts with 2 slashes then it is always considered an
+    // external URL without an explicit protocol part.
+    // @todo Remove this when https://www.drupal.org/node/2744729 lands.
+    if (strpos($uri, '//') === 0) {
+      return $this->configuration['uri_scheme'] . ltrim($uri, '/');
+    }
+
     // If we already have a scheme, we're fine.
     if (parse_url($uri, PHP_URL_SCHEME)) {
       return $uri;
diff --git a/core/modules/link/tests/src/Unit/Plugin/migrate/process/FieldLinkTest.php b/core/modules/link/tests/src/Unit/Plugin/migrate/process/FieldLinkTest.php
index d6721e51f2e5f952493f9618244a72e62fa5517d..1142ec0c2005193b90ea6ecb852b2cbda6e7dff6 100644
--- a/core/modules/link/tests/src/Unit/Plugin/migrate/process/FieldLinkTest.php
+++ b/core/modules/link/tests/src/Unit/Plugin/migrate/process/FieldLinkTest.php
@@ -66,6 +66,10 @@ public function canonicalizeUriDataProvider() {
         'https://yahoo.com',
         ['uri_scheme' => 'https://'],
       ],
+      'Absolute URL without explicit protocol (protocol-relative)' => [
+        '//example.com',
+        'http://example.com',
+      ],
       'Absolute URL with non-standard characters' => [
         'http://www.ßÀÑÐ¥ƒå¢ë.com',
         'http://www.ßÀÑÐ¥ƒå¢ë.com',