diff --git a/core/modules/path/src/Plugin/Field/FieldType/PathItem.php b/core/modules/path/src/Plugin/Field/FieldType/PathItem.php
index 4d8da7a..495253d 100644
--- a/core/modules/path/src/Plugin/Field/FieldType/PathItem.php
+++ b/core/modules/path/src/Plugin/Field/FieldType/PathItem.php
@@ -51,10 +51,21 @@ public function preSave() {
    * {@inheritdoc}
    */
   public function postSave($update) {
+    // Only process a non-empty alias.
+    $source = NULL;
+    if ($this->alias) {
+      $entity = $this->getEntity();
+      if ($entity->getEntityType()->isRevisionable() && !$entity->isDefaultRevision()) {
+        $source = $entity->toUrl('revision')->getInternalPath();
+      }
+      else {
+        $source = $entity->toUrl()->getInternalPath();
+      }
+    }
+
     if (!$update) {
-      if ($this->alias) {
-        $entity = $this->getEntity();
-        if ($path = \Drupal::service('path.alias_storage')->save('/' . $entity->urlInfo()->getInternalPath(), $this->alias, $this->getLangcode())) {
+      if ($source) {
+        if ($path = \Drupal::service('path.alias_storage')->save('/' . $source, $this->alias, $this->getLangcode())) {
           $this->pid = $path['pid'];
         }
       }
@@ -65,9 +76,8 @@ public function postSave($update) {
         \Drupal::service('path.alias_storage')->delete(['pid' => $this->pid]);
       }
       // Only save a non-empty alias.
-      elseif ($this->alias) {
-        $entity = $this->getEntity();
-        \Drupal::service('path.alias_storage')->save('/' . $entity->urlInfo()->getInternalPath(), $this->alias, $this->getLangcode(), $this->pid);
+      elseif ($source) {
+        \Drupal::service('path.alias_storage')->save('/' . $source, $this->alias, $this->getLangcode(), $this->pid);
       }
     }
   }
