diff --git a/core/modules/views/src/Form/ViewsForm.php b/core/modules/views/src/Form/ViewsForm.php
index cdf39eb..4951777 100644
--- a/core/modules/views/src/Form/ViewsForm.php
+++ b/core/modules/views/src/Form/ViewsForm.php
@@ -14,6 +14,7 @@
 use Drupal\Core\Form\FormInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Routing\UrlGeneratorInterface;
+use Drupal\Core\Url;
 use Drupal\views\ViewExecutable;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\RequestStack;
diff --git a/core/modules/views/src/ViewExecutable.php b/core/modules/views/src/ViewExecutable.php
index 0eb445d..4e65267 100644
--- a/core/modules/views/src/ViewExecutable.php
+++ b/core/modules/views/src/ViewExecutable.php
@@ -1733,6 +1733,14 @@ public function hasUrl($args = NULL, $display_id = NULL) {
       return TRUE;
     }
 
+    if ($this->live_preview === TRUE) {
+      return FALSE;
+    }
+
+    if ($this->changed === TRUE) {
+      return FALSE;
+    }
+
     // If the display has a valid route available (either its own or for a
     // linked display), then we can provide a URL for it.
     $display_handler = $this->displayHandlers->get($display_id ?: $this->current_display)->getRoutedDisplay();
diff --git a/core/modules/views_ui/src/ViewUI.php b/core/modules/views_ui/src/ViewUI.php
index 5355fcd..5754b6c 100644
--- a/core/modules/views_ui/src/ViewUI.php
+++ b/core/modules/views_ui/src/ViewUI.php
@@ -598,7 +598,7 @@ public function renderPreview($display_id, $args = array()) {
       $executable->setArguments($args);
 
       // Store the current view URL for later use:
-      if ($executable->display_handler->getOption('path')) {
+      if ($executable->hasUrl() && $executable->display_handler->getOption('path')) {
         $path = $executable->getUrl();
       }
 
