diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/field/Revision.php b/core/modules/node/lib/Drupal/node/Plugin/views/field/Revision.php
index 8d9d285..456cab3 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/field/Revision.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/field/Revision.php
@@ -30,8 +30,9 @@ public function init(ViewExecutable $view, DisplayPluginBase $display, array &$o
     if (!empty($this->options['link_to_node_revision'])) {
       $this->additional_fields['vid'] = 'vid';
       $this->additional_fields['nid'] = 'nid';
+      $this->additional_fields['current_vid'] = array('table' => 'current_node', 'field' => 'vid');
       if (module_exists('translation')) {
-        $this->additional_fields['langcode'] = array('table' => 'node', 'field' => 'langcode');
+        $this->additional_fields['langcode'] = array('table' => 'current_node', 'field' => 'langcode');
       }
     }
   }
@@ -64,7 +65,11 @@ function render_link($data, $values) {
       $this->options['alter']['make_link'] = TRUE;
       $nid = $this->get_value($values, 'nid');
       $vid = $this->get_value($values, 'vid');
-      $this->options['alter']['path'] = "node/" . $nid . '/revisions/' . $vid . '/view';
+      $current_vid = $this->get_value($values, 'current_vid');
+      $this->options['alter']['path'] = 'node/' . $nid;
+      if ($vid != $current_vid) {
+        $this->options['alter']['path'] .= "/revisions/$vid/view";
+      }
       if (module_exists('translation')) {
         $langcode = $this->get_value($values, 'langcode');
         $languages = language_list();
diff --git a/core/modules/node/node.views.inc b/core/modules/node/node.views.inc
index 6f3320f..27ffe79 100644
--- a/core/modules/node/node.views.inc
+++ b/core/modules/node/node.views.inc
@@ -436,6 +436,16 @@ function node_views_data() {
     ),
   );
 
+  // For some fields we need to join from the revision to the current node,
+  // so we add a pseudo-table to allow joining to the current node.
+  $data['current_node']['table']['join'] = array(
+    'node_revision' => array(
+      'table' => 'node',
+      'left_field' => 'nid',
+      'field' => 'nid',
+    ),
+  );
+
   $data['node_revision']['uid'] = array(
     'title' => t('User'),
     'help' => t('Relate a content revision to the user who created the revision.'),
