diff --git a/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php b/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php
index 0ca5bef..3be7e44 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php
@@ -152,10 +152,13 @@ public function save(array $form, array &$form_state) {
     if ($insert) {
       drupal_set_message($this->t('The feed %feed has been updated.', array('%feed' => $feed->label())));
       if (arg(0) == 'admin') {
-        $form_state['redirect'] = 'admin/config/services/aggregator';
+        $form_state['redirect_route']['route_name'] = 'aggregator.admin_overview';
       }
       else {
-        $form_state['redirect'] = 'aggregator/sources/' . $feed->id();
+        $form_state['redirect_route'] = array(
+          'route_name' => 'aggregator.feed_view',
+          'route_parameters' => array('aggregator_feed' => $feed->id()),
+        );
       }
     }
     else {
@@ -168,7 +171,10 @@ public function save(array $form, array &$form_state) {
    * {@inheritdoc}
    */
   public function delete(array $form, array &$form_state) {
-    $form_state['redirect'] = 'admin/config/services/aggregator/delete/feed/' . $this->entity->id();
+    $form_state['redirect_route'] = array(
+      'route_name' => 'aggregator.feed_delete',
+      'route_parameters' => array('aggregator_feed' => $this->entity->id()),
+    );
   }
 
 }
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Form/CategoryAdminForm.php b/core/modules/aggregator/lib/Drupal/aggregator/Form/CategoryAdminForm.php
index 68372c9..a24a420 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Form/CategoryAdminForm.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Form/CategoryAdminForm.php
@@ -144,7 +144,10 @@ public function submitForm(array &$form, array &$form_state) {
     // Redirect to a confirm delete form.
     if ($form_state['values']['op'] == $this->t('Delete')) {
       $cid = $form_state['values']['cid'];
-      $form_state['redirect'] = 'admin/config/services/aggregator/delete/category/' . $cid;
+      $form_state['redirect_route'] = array(
+        'route_name' => 'aggregator.category_delete',
+        'route_parameters' => array('cid' => $cid),
+      );
       return;
     }
 
@@ -154,10 +157,13 @@ public function submitForm(array &$form, array &$form_state) {
       $this->categoryStorageController->update((object) $form_state['values']);
       drupal_set_message($this->t('The category %category has been updated.', array('%category' => $title)));
       if (preg_match('/^\/admin/', $this->getRequest()->getPathInfo())) {
-        $form_state['redirect'] = 'admin/config/services/aggregator/';
+        $form_state['redirect_route']['route_name'] = 'aggregator.admin_overview';
       }
       else {
-        $form_state['redirect'] = 'aggregator/categories/' . $cid;
+        $form_state['redirect_route'] = array(
+          'route_name' => 'aggregator.category_view',
+          'route_parameters' => array('cid' => $cid),
+        );
       }
       $this->updateMenuLink('update', $link_path . $cid, $title);
       return;
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Form/CategoryDeleteForm.php b/core/modules/aggregator/lib/Drupal/aggregator/Form/CategoryDeleteForm.php
index 43c0ffa..0335e04 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Form/CategoryDeleteForm.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Form/CategoryDeleteForm.php
@@ -149,10 +149,10 @@ public function submitForm(array &$form, array &$form_state) {
     watchdog('aggregator', 'Category %category deleted.', array('%category' => $title));
     drupal_set_message($this->t('The category %category has been deleted.', array('%category' => $title)));
     if (preg_match('/^\/admin/', $this->getRequest()->getPathInfo())) {
-      $form_state['redirect'] = 'admin/config/services/aggregator/';
+      $form_state['redirect_route']['route_name'] = 'aggregator.admin_overview';
     }
     else {
-      $form_state['redirect'] = 'aggregator';
+      $form_state['redirect_route']['route_name'] = 'aggregator.page_last';
     }
     $this->updateMenuLink('delete', 'aggregator/categories/' . $cid, $title);
   }
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Form/FeedDeleteForm.php b/core/modules/aggregator/lib/Drupal/aggregator/Form/FeedDeleteForm.php
index adad1ee..7cc3827 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Form/FeedDeleteForm.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Form/FeedDeleteForm.php
@@ -45,10 +45,10 @@ public function submit(array $form, array &$form_state) {
     watchdog('aggregator', 'Feed %feed deleted.', array('%feed' => $this->entity->label()));
     drupal_set_message($this->t('The feed %feed has been deleted.', array('%feed' => $this->entity->label())));
     if (arg(0) == 'admin') {
-      $form_state['redirect'] = 'admin/config/services/aggregator';
+      $form_state['redirect_route']['route_name'] = 'aggregator.admin_overview';
     }
     else {
-      $form_state['redirect'] = 'aggregator/sources';
+      $form_state['redirect_route']['route_name'] = 'aggregator.sources';
     }
   }
 
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Form/FeedItemsRemoveForm.php b/core/modules/aggregator/lib/Drupal/aggregator/Form/FeedItemsRemoveForm.php
index 54b7d5a..05168c5 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Form/FeedItemsRemoveForm.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Form/FeedItemsRemoveForm.php
@@ -43,7 +43,7 @@ public function getConfirmText() {
   public function submit(array $form, array &$form_state) {
     $this->entity->removeItems();
 
-    $form_state['redirect'] = 'admin/config/services/aggregator';
+    $form_state['redirect_route']['route_name'] = 'aggregator.admin_overview';
   }
 
 }
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Form/OpmlFeedAdd.php b/core/modules/aggregator/lib/Drupal/aggregator/Form/OpmlFeedAdd.php
index abf1cad..748574f 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Form/OpmlFeedAdd.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Form/OpmlFeedAdd.php
@@ -213,7 +213,7 @@ public function submitForm(array &$form, array &$form_state) {
       $new_feed->save();
     }
 
-    $form_state['redirect'] = 'admin/config/services/aggregator';
+    $form_state['redirect_route']['route_name'] = 'aggregator.admin_overview';
   }
 
   /**
diff --git a/core/modules/contact/lib/Drupal/contact/CategoryFormController.php b/core/modules/contact/lib/Drupal/contact/CategoryFormController.php
index bd12a66..a383881 100644
--- a/core/modules/contact/lib/Drupal/contact/CategoryFormController.php
+++ b/core/modules/contact/lib/Drupal/contact/CategoryFormController.php
@@ -121,14 +121,17 @@ public function save(array $form, array &$form_state) {
         ->save();
     }
 
-    $form_state['redirect'] = 'admin/structure/contact';
+    $form_state['redirect_route']['route_name'] = 'contact.category_list';
   }
 
   /**
    * Overrides Drupal\Core\Entity\EntityFormController::delete().
    */
   public function delete(array $form, array &$form_state) {
-    $form_state['redirect'] = 'admin/structure/contact/manage/' . $this->entity->id() . '/delete';
+    $form_state['redirect_route'] = array(
+      'route_name' => 'contact.category_delete',
+      'route_parameters' => array('contact_category' => $this->entity->id()),
+    );
   }
 
 }
diff --git a/core/modules/contact/lib/Drupal/contact/Form/CategoryDeleteForm.php b/core/modules/contact/lib/Drupal/contact/Form/CategoryDeleteForm.php
index 9b74947..dac498e 100644
--- a/core/modules/contact/lib/Drupal/contact/Form/CategoryDeleteForm.php
+++ b/core/modules/contact/lib/Drupal/contact/Form/CategoryDeleteForm.php
@@ -44,7 +44,7 @@ public function submit(array $form, array &$form_state) {
     $this->entity->delete();
     drupal_set_message(t('Category %label has been deleted.', array('%label' => $this->entity->label())));
     watchdog('contact', 'Category %label has been deleted.', array('%label' => $this->entity->label()), WATCHDOG_NOTICE);
-    $form_state['redirect'] = 'admin/structure/contact';
+    $form_state['redirect_route']['route_name'] = 'contact.category_list';
   }
 
 }
diff --git a/core/modules/contact/lib/Drupal/contact/MessageFormController.php b/core/modules/contact/lib/Drupal/contact/MessageFormController.php
index b056dc6..ca4a607 100644
--- a/core/modules/contact/lib/Drupal/contact/MessageFormController.php
+++ b/core/modules/contact/lib/Drupal/contact/MessageFormController.php
@@ -212,7 +212,7 @@ public function save(array $form, array &$form_state) {
       $form_state['redirect'] = array($uri['path'], $uri['options']);
     }
     else {
-      $form_state['redirect'] = '';
+      $form_state['redirect_route']['route_name'] = '<front>';
     }
   }
 }
diff --git a/core/modules/menu/lib/Drupal/menu/Form/MenuDeleteForm.php b/core/modules/menu/lib/Drupal/menu/Form/MenuDeleteForm.php
index ac1e7fb..35d074d 100644
--- a/core/modules/menu/lib/Drupal/menu/Form/MenuDeleteForm.php
+++ b/core/modules/menu/lib/Drupal/menu/Form/MenuDeleteForm.php
@@ -97,7 +97,7 @@ public function getConfirmText() {
    * {@inheritdoc}
    */
   public function submit(array $form, array &$form_state) {
-    $form_state['redirect'] = 'admin/structure/menu';
+    $form_state['redirect_route']['route_name'] = 'menu.overview_page';
 
     // Locked menus may not be deleted.
     if ($this->entity->isLocked()) {
diff --git a/core/modules/menu/lib/Drupal/menu/Form/MenuLinkDeleteForm.php b/core/modules/menu/lib/Drupal/menu/Form/MenuLinkDeleteForm.php
index 2815a91..efc9cdd 100644
--- a/core/modules/menu/lib/Drupal/menu/Form/MenuLinkDeleteForm.php
+++ b/core/modules/menu/lib/Drupal/menu/Form/MenuLinkDeleteForm.php
@@ -41,7 +41,12 @@ public function submit(array $form, array &$form_state) {
     $t_args = array('%title' => $this->entity->link_title);
     drupal_set_message(t('The menu link %title has been deleted.', $t_args));
     watchdog('menu', 'Deleted menu link %title.', $t_args, WATCHDOG_NOTICE);
-    $form_state['redirect'] = 'admin/structure/menu/manage/' . $this->entity->menu_name;
+    $form_state['redirect_route'] = array(
+      'route_name' => 'menu.menu_edit',
+      'route_parameters' => array(
+        'menu' => $this->entity->menu_name,
+      ),
+    );
   }
 
 }
diff --git a/core/modules/menu/lib/Drupal/menu/Form/MenuLinkResetForm.php b/core/modules/menu/lib/Drupal/menu/Form/MenuLinkResetForm.php
index 5b79ef4..7542c57 100644
--- a/core/modules/menu/lib/Drupal/menu/Form/MenuLinkResetForm.php
+++ b/core/modules/menu/lib/Drupal/menu/Form/MenuLinkResetForm.php
@@ -53,7 +53,12 @@ public function getConfirmText() {
   public function submit(array $form, array &$form_state) {
     $new_menu_link = $this->entity->reset();
     drupal_set_message(t('The menu link was reset to its default settings.'));
-    $form_state['redirect'] = 'admin/structure/menu/manage/' . $new_menu_link->menu_name;
+    $form_state['redirect_route'] = array(
+      'route_name' => 'menu.menu_edit',
+      'route_parameters' => array(
+        'menu' => $new_menu_link->menu_name,
+      ),
+    );
   }
 
 }
diff --git a/core/modules/menu/lib/Drupal/menu/MenuFormController.php b/core/modules/menu/lib/Drupal/menu/MenuFormController.php
index 8d9ca26..5e369d5 100644
--- a/core/modules/menu/lib/Drupal/menu/MenuFormController.php
+++ b/core/modules/menu/lib/Drupal/menu/MenuFormController.php
@@ -215,14 +215,24 @@ public function save(array $form, array &$form_state) {
       watchdog('menu', 'Menu %label has been added.', array('%label' => $menu->label()), WATCHDOG_NOTICE, l(t('Edit'), $uri['path'] . '/edit'));
     }
 
-    $form_state['redirect'] = 'admin/structure/menu/manage/' . $menu->id();
+    $form_state['redirect_route'] = array(
+      'route_name' => 'menu.menu_edit',
+      'route_parameters' => array(
+        'menu' => $this->entity->id(),
+      ),
+    );
   }
 
   /**
    * {@inheritdoc}
    */
   public function delete(array $form, array &$form_state) {
-    $form_state['redirect'] = 'admin/structure/menu/manage/' . $this->entity->id() . '/delete';
+    $form_state['redirect_route'] = array(
+      'route_name' => 'menu.delete_menu',
+      'route_parameters' => array(
+        'menu' => $this->entity->id(),
+      ),
+    );
   }
 
   /**
diff --git a/core/modules/node/lib/Drupal/node/Form/DeleteMultiple.php b/core/modules/node/lib/Drupal/node/Form/DeleteMultiple.php
index 52e4dfb..c847004 100644
--- a/core/modules/node/lib/Drupal/node/Form/DeleteMultiple.php
+++ b/core/modules/node/lib/Drupal/node/Form/DeleteMultiple.php
@@ -126,7 +126,7 @@ public function submitForm(array &$form, array &$form_state) {
       drupal_set_message(format_plural($count, 'Deleted 1 post.', 'Deleted @count posts.'));
       Cache::invalidateTags(array('content' => TRUE));
     }
-    $form_state['redirect'] = 'admin/content';
+    $form_state['redirect_route']['route_name'] = 'node.content_overview';
   }
 
 }
diff --git a/core/modules/node/lib/Drupal/node/Form/NodeDeleteForm.php b/core/modules/node/lib/Drupal/node/Form/NodeDeleteForm.php
index 11eb3f3..6ba873a 100644
--- a/core/modules/node/lib/Drupal/node/Form/NodeDeleteForm.php
+++ b/core/modules/node/lib/Drupal/node/Form/NodeDeleteForm.php
@@ -97,7 +97,7 @@ public function submit(array $form, array &$form_state) {
     $node_type = $this->nodeTypeStorage->load($this->entity->bundle())->label();
     drupal_set_message(t('@type %title has been deleted.', array('@type' => $node_type, '%title' => $this->entity->label())));
     Cache::invalidateTags(array('content' => TRUE));
-    $form_state['redirect'] = '<front>';
+    $form_state['redirect_route']['route_name'] = '<front>';
   }
 
 }
diff --git a/core/modules/node/lib/Drupal/node/Form/NodeRevisionDeleteForm.php b/core/modules/node/lib/Drupal/node/Form/NodeRevisionDeleteForm.php
index 1ce40f7..99edd0e 100644
--- a/core/modules/node/lib/Drupal/node/Form/NodeRevisionDeleteForm.php
+++ b/core/modules/node/lib/Drupal/node/Form/NodeRevisionDeleteForm.php
@@ -123,9 +123,14 @@ public function submitForm(array &$form, array &$form_state) {
     watchdog('content', '@type: deleted %title revision %revision.', array('@type' => $this->revision->bundle(), '%title' => $this->revision->label(), '%revision' => $this->revision->getRevisionId()));
     $node_type = $this->nodeTypeStorage->load($this->revision->bundle())->label();
     drupal_set_message(t('Revision from %revision-date of @type %title has been deleted.', array('%revision-date' => format_date($this->revision->getRevisionCreationTime()), '@type' => $node_type, '%title' => $this->revision->label())));
-    $form_state['redirect'] = 'node/' . $this->revision->id();
+    $form_state['redirect_route'] = array(
+      'route_name' => 'node.view',
+      'route_parameters' => array(
+        'node' => $this->revision->id(),
+      ),
+    );
     if ($this->connection->query('SELECT COUNT(DISTINCT vid) FROM {node_field_revision} WHERE nid = :nid', array(':nid' => $this->revision->id()))->fetchField() > 1) {
-      $form_state['redirect'] .= '/revisions';
+      $form_state['redirect_route']['route_name'] = 'node.revision_overview';
     }
   }
 
diff --git a/core/modules/node/lib/Drupal/node/Form/NodeRevisionRevertForm.php b/core/modules/node/lib/Drupal/node/Form/NodeRevisionRevertForm.php
index 72f6dc5..12cb9e3 100644
--- a/core/modules/node/lib/Drupal/node/Form/NodeRevisionRevertForm.php
+++ b/core/modules/node/lib/Drupal/node/Form/NodeRevisionRevertForm.php
@@ -115,7 +115,12 @@ public function submitForm(array &$form, array &$form_state) {
 
     watchdog('content', '@type: reverted %title revision %revision.', array('@type' => $this->revision->bundle(), '%title' => $this->revision->label(), '%revision' => $this->revision->getRevisionId()));
     drupal_set_message(t('@type %title has been reverted back to the revision from %revision-date.', array('@type' => node_get_type_label($this->revision), '%title' => $this->revision->label(), '%revision-date' => format_date($original_revision_timestamp))));
-    $form_state['redirect'] = 'node/' . $this->revision->id() . '/revisions';
+    $form_state['redirect_route'] = array(
+      'route_name' => 'node.revision_overview',
+      'route_parameters' => array(
+        'node' => $this->revision->id(),
+      ),
+    );
   }
 
 }
diff --git a/core/modules/node/lib/Drupal/node/Form/NodeTypeDeleteConfirm.php b/core/modules/node/lib/Drupal/node/Form/NodeTypeDeleteConfirm.php
index 06c5766..8adc575 100644
--- a/core/modules/node/lib/Drupal/node/Form/NodeTypeDeleteConfirm.php
+++ b/core/modules/node/lib/Drupal/node/Form/NodeTypeDeleteConfirm.php
@@ -89,7 +89,7 @@ public function submit(array $form, array &$form_state) {
     drupal_set_message(t('The content type %name has been deleted.', $t_args));
     watchdog('node', 'Deleted content type %name.', $t_args, WATCHDOG_NOTICE);
 
-    $form_state['redirect'] = 'admin/structure/types';
+    $form_state['redirect_route']['route_name'] = 'node.overview_types';
   }
 
 }
diff --git a/core/modules/node/lib/Drupal/node/Form/RebuildPermissionsForm.php b/core/modules/node/lib/Drupal/node/Form/RebuildPermissionsForm.php
index cd12cb5..ee70dfd 100644
--- a/core/modules/node/lib/Drupal/node/Form/RebuildPermissionsForm.php
+++ b/core/modules/node/lib/Drupal/node/Form/RebuildPermissionsForm.php
@@ -53,7 +53,7 @@ public function getDescription() {
    */
   public function submitForm(array &$form, array &$form_state) {
     node_access_rebuild(TRUE);
-    $form_state['redirect'] = 'admin/reports/status';
+    $form_state['redirect_route']['route_name'] = 'system.status';
   }
 
 }
diff --git a/core/modules/node/lib/Drupal/node/NodeFormController.php b/core/modules/node/lib/Drupal/node/NodeFormController.php
index e14a662..659777a 100644
--- a/core/modules/node/lib/Drupal/node/NodeFormController.php
+++ b/core/modules/node/lib/Drupal/node/NodeFormController.php
@@ -482,7 +482,17 @@ public function save(array $form, array &$form_state) {
     if ($node->id()) {
       $form_state['values']['nid'] = $node->id();
       $form_state['nid'] = $node->id();
-      $form_state['redirect'] = node_access('view', $node) ? 'node/' . $node->id() : '<front>';
+      if ($node->access('view')) {
+        $form_state['redirect_route'] = array(
+          'route_name' => 'node.view',
+          'route_parameters' => array(
+            'node' => $node->id(),
+          ),
+        );
+      }
+      else {
+        $form_state['redirect_route']['route_name'] = '<front>';
+      }
     }
     else {
       // In the unlikely case something went wrong on save, the node will be
@@ -505,8 +515,15 @@ public function delete(array $form, array &$form_state) {
       $destination = drupal_get_destination();
       $query->remove('destination');
     }
-    $node = $this->entity;
-    $form_state['redirect'] = array('node/' . $node->id() . '/delete', array('query' => $destination));
+    $form_state['redirect_route'] = array(
+      'route_name' => 'node.delete_confirm',
+      'route_parameters' => array(
+        'node' => $this->entity->id(),
+      ),
+      'options' => array(
+        'query' => $destination,
+      ),
+    );
   }
 
 }
diff --git a/core/modules/node/lib/Drupal/node/NodeTypeFormController.php b/core/modules/node/lib/Drupal/node/NodeTypeFormController.php
index a385b20..ef94963 100644
--- a/core/modules/node/lib/Drupal/node/NodeTypeFormController.php
+++ b/core/modules/node/lib/Drupal/node/NodeTypeFormController.php
@@ -236,14 +236,19 @@ public function save(array $form, array &$form_state) {
       watchdog('node', 'Added content type %name.', $t_args, WATCHDOG_NOTICE, l(t('view'), 'admin/structure/types'));
     }
 
-    $form_state['redirect'] = 'admin/structure/types';
+    $form_state['redirect_route']['route_name'] = 'node.overview_types';
   }
 
   /**
    * {@inheritdoc}
    */
   public function delete(array $form, array &$form_state) {
-    $form_state['redirect'] = 'admin/structure/types/manage/' . $this->entity->id() . '/delete';
+    $form_state['redirect_route'] = array(
+      'route_name' => 'node.type_delete_confirm',
+      'route_parameters' => array(
+        'node_type' => $this->entity->id(),
+      ),
+    );
   }
 
 }
diff --git a/core/modules/system/lib/Drupal/system/Form/DateFormatDeleteForm.php b/core/modules/system/lib/Drupal/system/Form/DateFormatDeleteForm.php
index 619a920..79629fa 100644
--- a/core/modules/system/lib/Drupal/system/Form/DateFormatDeleteForm.php
+++ b/core/modules/system/lib/Drupal/system/Form/DateFormatDeleteForm.php
@@ -75,7 +75,7 @@ public function submit(array $form, array &$form_state) {
     $this->entity->delete();
     drupal_set_message(t('Removed date format %format.', array('%format' => $this->entity->label())));
 
-    $form_state['redirect'] = 'admin/config/regional/date-time';
+    $form_state['redirect_route']['route_name'] = 'system.date_format_list';
   }
 
 }
diff --git a/core/modules/system/lib/Drupal/system/Form/DateFormatFormBase.php b/core/modules/system/lib/Drupal/system/Form/DateFormatFormBase.php
index be4c55b..356784f 100644
--- a/core/modules/system/lib/Drupal/system/Form/DateFormatFormBase.php
+++ b/core/modules/system/lib/Drupal/system/Form/DateFormatFormBase.php
@@ -210,7 +210,7 @@ public function validate(array $form, array &$form_state) {
    * {@inheritdoc}
    */
   public function submit(array $form, array &$form_state) {
-    $form_state['redirect'] = 'admin/config/regional/date-time';
+    $form_state['redirect_route']['route_name'] = 'system.date_format_list';
     $form_state['values']['pattern'][$this->patternType] = trim($form_state['values']['date_format_pattern']);
 
     parent::submit($form, $form_state);
diff --git a/core/modules/system/lib/Drupal/system/Form/DateFormatLocalizeResetForm.php b/core/modules/system/lib/Drupal/system/Form/DateFormatLocalizeResetForm.php
index 6770e18..868ba7e 100644
--- a/core/modules/system/lib/Drupal/system/Form/DateFormatLocalizeResetForm.php
+++ b/core/modules/system/lib/Drupal/system/Form/DateFormatLocalizeResetForm.php
@@ -111,7 +111,7 @@ public function submitForm(array &$form, array &$form_state) {
     }
     entity_render_cache_clear();
 
-    $form_state['redirect'] = 'admin/config/regional/date-time/locale';
+    $form_state['redirect_route']['route_name'] = 'system.date_format_language_overview';
   }
 
 }
diff --git a/core/modules/system/lib/Drupal/system/Form/ModulesListConfirmForm.php b/core/modules/system/lib/Drupal/system/Form/ModulesListConfirmForm.php
index ccab5b1..3f5ae9f 100644
--- a/core/modules/system/lib/Drupal/system/Form/ModulesListConfirmForm.php
+++ b/core/modules/system/lib/Drupal/system/Form/ModulesListConfirmForm.php
@@ -153,7 +153,7 @@ public function submitForm(array &$form, array &$form_state) {
       drupal_set_message($this->t('The configuration options have been saved.'));
     }
 
-    $form_state['redirect'] = 'admin/modules';
+    $form_state['redirect_route']['route_name'] = 'system.modules_list';
   }
 
 }
diff --git a/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php b/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php
index 5566b28..a090c67 100644
--- a/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php
+++ b/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php
@@ -392,7 +392,7 @@ public function submitForm(array &$form, array &$form_state) {
       $this->keyValueExpirable->setWithExpire($account, $modules, 60);
 
       // Redirect to the confirmation form.
-      $form_state['redirect'] = 'admin/modules/list/confirm';
+      $form_state['redirect_route']['route_name'] = 'system.modules_list_confirm';
 
       // We can exit here because at least one modules has dependencies
       // which we have to prompt the user for in a confirmation form.
diff --git a/core/modules/system/lib/Drupal/system/Form/ModulesUninstallConfirmForm.php b/core/modules/system/lib/Drupal/system/Form/ModulesUninstallConfirmForm.php
index efc31c1..1a85d9e 100644
--- a/core/modules/system/lib/Drupal/system/Form/ModulesUninstallConfirmForm.php
+++ b/core/modules/system/lib/Drupal/system/Form/ModulesUninstallConfirmForm.php
@@ -137,7 +137,7 @@ public function submitForm(array &$form, array &$form_state) {
     $this->moduleHandler->uninstall($this->modules);
 
     drupal_set_message($this->t('The selected modules have been uninstalled.'));
-    $form_state['redirect'] = 'admin/modules/uninstall';
+    $form_state['redirect_route']['route_name'] = 'system.modules_uninstall';
   }
 
 }
diff --git a/core/modules/system/lib/Drupal/system/Form/ModulesUninstallForm.php b/core/modules/system/lib/Drupal/system/Form/ModulesUninstallForm.php
index ed92064..711f934 100644
--- a/core/modules/system/lib/Drupal/system/Form/ModulesUninstallForm.php
+++ b/core/modules/system/lib/Drupal/system/Form/ModulesUninstallForm.php
@@ -129,7 +129,7 @@ public function validateForm(array &$form, array &$form_state) {
     // Form submitted, but no modules selected.
     if (!array_filter($form_state['values']['uninstall'])) {
       drupal_set_message($this->t('No modules selected.'), 'error');
-      $form_state['redirect'] = 'admin/modules/uninstall';
+      $form_state['redirect_route']['route_name'] = 'system.modules_uninstall';
     }
   }
 
@@ -144,6 +144,6 @@ public function submitForm(array &$form, array &$form_state) {
     $this->keyValueExpirable->setWithExpire($account, $uninstall, 60);
 
     // Redirect to the confirm form.
-    $form_state['redirect'] = 'admin/modules/uninstall/confirm';
+    $form_state['redirect_route']['route_name'] = 'system.modules_uninstall_confirm';
   }
 }
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index bb8c6b4..835935a 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -860,7 +860,7 @@ function system_date_format_localize_form_submit($form, &$form_state) {
     }
   }
   drupal_set_message(t('Configuration saved.'));
-  $form_state['redirect'] = 'admin/config/regional/date-time/locale';
+  $form_state['redirect_route']['route_name'] = 'system.date_format_language_overview';
 }
 
 /**
diff --git a/core/modules/system/tests/modules/ajax_test/ajax_test.module b/core/modules/system/tests/modules/ajax_test/ajax_test.module
index 802b34e..f42844f 100644
--- a/core/modules/system/tests/modules/ajax_test/ajax_test.module
+++ b/core/modules/system/tests/modules/ajax_test/ajax_test.module
@@ -213,7 +213,7 @@ function ajax_test_dialog_form($form, &$form_state) {
  * Non-AJAX behavior of the dialog buttons.
  */
 function ajax_test_dialog_form_submit($form, &$form_state) {
-  $form_state['redirect'] = 'ajax-test/dialog-contents';
+  $form_state['redirect_route']['route_name'] = 'ajax_test.dialog_contents';
 }
 
 /**
diff --git a/core/modules/system/tests/modules/batch_test/batch_test.module b/core/modules/system/tests/modules/batch_test/batch_test.module
index ff0e37f..0dbbff8 100644
--- a/core/modules/system/tests/modules/batch_test/batch_test.module
+++ b/core/modules/system/tests/modules/batch_test/batch_test.module
@@ -108,7 +108,7 @@ function batch_test_simple_form_submit($form, &$form_state) {
   $function = '_batch_test_' . $form_state['values']['batch'];
   batch_set($function());
 
-  $form_state['redirect'] = 'batch-test/redirect';
+  $form_state['redirect_route']['route_name'] = 'batch_test.redirect';
 }
 
 
@@ -158,7 +158,7 @@ function batch_test_multistep_form_submit($form, &$form_state) {
   }
 
   // This will only be effective on the last step.
-  $form_state['redirect'] = 'batch-test/redirect';
+  $form_state['redirect_route']['route_name'] = 'batch_test.redirect';
 }
 
 /**
@@ -208,7 +208,7 @@ function batch_test_chained_form_submit_1($form, &$form_state) {
   batch_set(_batch_test_batch_1());
 
   // This redirect should not be taken into account.
-  $form_state['redirect'] = 'should/be/discarded';
+  $form_state['redirect_route']['route_name'] = 'batch_test.redirect';
 }
 
 /**
@@ -224,7 +224,7 @@ function batch_test_chained_form_submit_2($form, &$form_state) {
   batch_set(_batch_test_batch_2());
 
   // This redirect should not be taken into account.
-  $form_state['redirect'] = 'should/be/discarded';
+  $form_state['redirect_route']['route_name'] = 'batch_test.redirect';
 }
 
 /**
@@ -239,7 +239,7 @@ function batch_test_chained_form_submit_3($form, &$form_state) {
   $form_state['values']['value']++;
 
   // This redirect should not be taken into account.
-  $form_state['redirect'] = 'should/be/discarded';
+  $form_state['redirect_route']['route_name'] = 'batch_test.redirect';
 }
 
 /**
@@ -255,7 +255,7 @@ function batch_test_chained_form_submit_4($form, &$form_state) {
   batch_set(_batch_test_batch_3());
 
   // This is the redirect that should prevail.
-  $form_state['redirect'] = 'batch-test/redirect';
+  $form_state['redirect_route']['route_name'] = 'batch_test.redirect';
 }
 
 /**
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestFormController.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestFormController.php
index 7b0741d..c4e35ce 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestFormController.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestFormController.php
@@ -109,6 +109,6 @@ public function delete(array $form, array &$form_state) {
     $entity = $this->entity;
     $entity->delete();
     drupal_set_message(t('%entity_type @id has been deleted.', array('@id' => $entity->id(), '%entity_type' => $entity->entityType())));
-    $form_state['redirect'] = '<front>';
+    $form_state['redirect_route']['route_name'] = '<front>';
   }
 }
diff --git a/core/modules/system/tests/modules/form_test/form_test.module b/core/modules/system/tests/modules/form_test/form_test.module
index a3d1cd0..6c77151 100644
--- a/core/modules/system/tests/modules/form_test/form_test.module
+++ b/core/modules/system/tests/modules/form_test/form_test.module
@@ -647,7 +647,7 @@ function form_test_storage_form_submit($form, &$form_state) {
   if (isset($form_state['storage']['thing']['changed'])) {
     drupal_set_message("The thing has been changed.");
   }
-  $form_state['redirect'] = 'node';
+  $form_state['redirect_route']['route_name'] = '<front>';
 }
 
 /**
diff --git a/core/modules/system/tests/modules/form_test/lib/Drupal/form_test/ConfirmFormTestForm.php b/core/modules/system/tests/modules/form_test/lib/Drupal/form_test/ConfirmFormTestForm.php
index fe5461b..43f8173 100644
--- a/core/modules/system/tests/modules/form_test/lib/Drupal/form_test/ConfirmFormTestForm.php
+++ b/core/modules/system/tests/modules/form_test/lib/Drupal/form_test/ConfirmFormTestForm.php
@@ -72,7 +72,7 @@ public function buildForm(array $form, array &$form_state) {
    */
   public function submitForm(array &$form, array &$form_state) {
     drupal_set_message($this->t('The ConfirmFormTestForm::submitForm() method was used for this form.'));
-    $form_state['redirect'] = '';
+    $form_state['redirect_route']['route_name'] = '<front>';
   }
 
 }
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Form/OverviewTerms.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Form/OverviewTerms.php
index 3852ea8..b85d3fb 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Form/OverviewTerms.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Form/OverviewTerms.php
@@ -452,7 +452,10 @@ public function submitForm(array &$form, array &$form_state) {
    * Redirects to confirmation form for the reset action.
    */
   public function submitReset(array &$form, array &$form_state) {
-    $form_state['redirect'] = 'admin/structure/taxonomy/manage/' . $form_state['taxonomy']['vocabulary']->id() . '/reset';
+    $form_state['redirect_route'] = array(
+      'route_name' => 'taxonomy.vocabulary_reset',
+      'route_parameters' => array('taxonomy_vocabulary' => $form_state['taxonomy']['vocabulary']->id()),
+    );
   }
 
 }
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Form/TermDeleteForm.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Form/TermDeleteForm.php
index 18d3a6a..1a77f20 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Form/TermDeleteForm.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Form/TermDeleteForm.php
@@ -92,7 +92,7 @@ public function submit(array $form, array &$form_state) {
 
     drupal_set_message($this->t('Deleted term %name.', array('%name' => $this->entity->label())));
     watchdog('taxonomy', 'Deleted term %name.', array('%name' => $this->entity->label()), WATCHDOG_NOTICE);
-    $form_state['redirect'] = 'admin/structure/taxonomy';
+    $form_state['redirect_route']['route_name'] = 'taxonomy.vocabulary_list';
     Cache::invalidateTags(array('content' => TRUE));
   }
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Form/VocabularyDeleteForm.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Form/VocabularyDeleteForm.php
index a2cf2ef..8032901 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Form/VocabularyDeleteForm.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Form/VocabularyDeleteForm.php
@@ -59,7 +59,7 @@ public function submit(array $form, array &$form_state) {
     $this->entity->delete();
     drupal_set_message($this->t('Deleted vocabulary %name.', array('%name' => $this->entity->label())));
     watchdog('taxonomy', 'Deleted vocabulary %name.', array('%name' => $this->entity->label()), WATCHDOG_NOTICE);
-    $form_state['redirect'] = 'admin/structure/taxonomy';
+    $form_state['redirect_route']['route_name'] = 'taxonomy.vocabulary_list';
     Cache::invalidateTags(array('content' => TRUE));
   }
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Form/VocabularyResetForm.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Form/VocabularyResetForm.php
index e735800..9f9e255 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Form/VocabularyResetForm.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Form/VocabularyResetForm.php
@@ -89,7 +89,10 @@ public function save(array $form, array &$form_state) {
     $this->termStorage->resetWeights($this->entity->id());
     drupal_set_message($this->t('Reset vocabulary %name to alphabetical order.', array('%name' => $this->entity->label())));
     watchdog('taxonomy', 'Reset vocabulary %name to alphabetical order.', array('%name' => $this->entity->label()), WATCHDOG_NOTICE);
-    $form_state['redirect'] = 'admin/structure/taxonomy/manage/' . $this->entity->id();
+    $form_state['redirect_route'] = array(
+      'route_name' => 'taxonomy.vocabulary_edit',
+      'route_parameters' => array('taxonomy_vocabulary' => $this->entity->id()),
+    );
   }
 
 }
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/TermFormController.php b/core/modules/taxonomy/lib/Drupal/taxonomy/TermFormController.php
index 8821b09..5ecbf85 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/TermFormController.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/TermFormController.php
@@ -242,7 +242,11 @@ public function delete(array $form, array &$form_state) {
     if ($this->getRequest()->query->has('destination')) {
       $destination = drupal_get_destination();
     }
-    $form_state['redirect'] = array('taxonomy/term/' . $this->entity->id() . '/delete', array('query' => $destination));
+    $form_state['redirect_route'] = array(
+      'route_name' => 'taxonomy.term_page',
+      'route_parameters' => array('taxonomy_term' => $this->entity->id()),
+      'options' => array('query' => $destination),
+    );
   }
 
 }
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyFormController.php b/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyFormController.php
index 0a1537b..6be463e 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyFormController.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyFormController.php
@@ -132,13 +132,16 @@ public function save(array $form, array &$form_state) {
       case SAVED_NEW:
         drupal_set_message($this->t('Created new vocabulary %name.', array('%name' => $vocabulary->name)));
         watchdog('taxonomy', 'Created new vocabulary %name.', array('%name' => $vocabulary->name), WATCHDOG_NOTICE, l($this->t('edit'), 'admin/structure/taxonomy/manage/' . $vocabulary->id() . '/edit'));
-        $form_state['redirect'] = 'admin/structure/taxonomy/manage/' . $vocabulary->id();
+        $form_state['redirect_route'] = array(
+          'route_name' => 'taxonomy.vocabulary_edit',
+          'route_parameters' => array('taxonomy_vocabulary' => $vocabulary->id()),
+        );
         break;
 
       case SAVED_UPDATED:
         drupal_set_message($this->t('Updated vocabulary %name.', array('%name' => $vocabulary->name)));
         watchdog('taxonomy', 'Updated vocabulary %name.', array('%name' => $vocabulary->name), WATCHDOG_NOTICE, l($this->t('edit'), 'admin/structure/taxonomy/manage/' . $vocabulary->id() . '/edit'));
-        $form_state['redirect'] = 'admin/structure/taxonomy';
+        $form_state['redirect_route']['route_name'] = 'taxonomy.vocabulary_list';
         break;
     }
 
@@ -151,7 +154,10 @@ public function save(array $form, array &$form_state) {
    */
   public function delete(array $form, array &$form_state) {
     $vocabulary = $this->getEntity($form_state);
-    $form_state['redirect'] = array('admin/structure/taxonomy/manage/' . $vocabulary->id() . '/delete');
+    $form_state['redirect_route'] = array(
+      'route_name' => 'taxonomy.vocabulary_delete',
+      'route_parameters' => array('taxonomy_vocabulary' => $vocabulary->id()),
+    );
   }
 
 }
diff --git a/core/modules/user/lib/Drupal/user/Form/UserCancelForm.php b/core/modules/user/lib/Drupal/user/Form/UserCancelForm.php
index 973c84e..9bec7d1 100644
--- a/core/modules/user/lib/Drupal/user/Form/UserCancelForm.php
+++ b/core/modules/user/lib/Drupal/user/Form/UserCancelForm.php
@@ -154,7 +154,7 @@ public function submit(array $form, array &$form_state) {
     if ($this->currentUser()->hasPermission('administer users') && empty($form_state['values']['user_cancel_confirm']) && $this->entity->id() != $this->currentUser()->id()) {
       user_cancel($form_state['values'], $this->entity->id(), $form_state['values']['user_cancel_method']);
 
-      $form_state['redirect'] = 'admin/people';
+      $form_state['redirect_route']['route_name'] = 'user.admin_account';
     }
     else {
       // Store cancelling method and whether to notify the user in
@@ -166,7 +166,10 @@ public function submit(array $form, array &$form_state) {
       drupal_set_message($this->t('A confirmation request to cancel your account has been sent to your e-mail address.'));
       watchdog('user', 'Sent account cancellation request to %name %email.', array('%name' => $this->entity->label(), '%email' => '<' . $this->entity->getEmail() . '>'), WATCHDOG_NOTICE);
 
-      $form_state['redirect'] = 'user/' . $this->entity->id();
+      $form_state['redirect_route'] = array(
+        'route_name' => 'user.view',
+        'route_parameters' => array('user' => $this->entity->id()),
+      );
     }
   }
 
diff --git a/core/modules/user/lib/Drupal/user/Form/UserLoginForm.php b/core/modules/user/lib/Drupal/user/Form/UserLoginForm.php
index b01887b..aa0228d 100644
--- a/core/modules/user/lib/Drupal/user/Form/UserLoginForm.php
+++ b/core/modules/user/lib/Drupal/user/Form/UserLoginForm.php
@@ -104,7 +104,10 @@ public function buildForm(array $form, array &$form_state) {
    */
   public function submitForm(array &$form, array &$form_state) {
     $account = $this->userStorage->load($form_state['uid']);
-    $form_state['redirect'] = 'user/' . $account->id();
+    $form_state['redirect_route'] = array(
+      'route_name' => 'user.view',
+      'route_parameters' => array('user' => $account->id()),
+    );
 
     user_login_finalize($account);
   }
diff --git a/core/modules/user/lib/Drupal/user/Form/UserMultipleCancelConfirm.php b/core/modules/user/lib/Drupal/user/Form/UserMultipleCancelConfirm.php
index 0310d41..ba85502 100644
--- a/core/modules/user/lib/Drupal/user/Form/UserMultipleCancelConfirm.php
+++ b/core/modules/user/lib/Drupal/user/Form/UserMultipleCancelConfirm.php
@@ -210,7 +210,7 @@ public function submitForm(array &$form, array &$form_state) {
         }
       }
     }
-    $form_state['redirect'] = 'admin/people';
+    $form_state['redirect_route']['route_name'] = 'user.admin_account';
   }
 
 }
diff --git a/core/modules/user/lib/Drupal/user/Form/UserPasswordForm.php b/core/modules/user/lib/Drupal/user/Form/UserPasswordForm.php
index e519b8e..af22943 100644
--- a/core/modules/user/lib/Drupal/user/Form/UserPasswordForm.php
+++ b/core/modules/user/lib/Drupal/user/Form/UserPasswordForm.php
@@ -137,7 +137,7 @@ public function submitForm(array &$form, array &$form_state) {
       drupal_set_message($this->t('Further instructions have been sent to your e-mail address.'));
     }
 
-    $form_state['redirect'] = 'user';
+    $form_state['redirect_route']['route_name'] = 'user.page';
   }
 
 }
diff --git a/core/modules/user/lib/Drupal/user/Form/UserRoleDelete.php b/core/modules/user/lib/Drupal/user/Form/UserRoleDelete.php
index 5aca6c7..bbb3614 100644
--- a/core/modules/user/lib/Drupal/user/Form/UserRoleDelete.php
+++ b/core/modules/user/lib/Drupal/user/Form/UserRoleDelete.php
@@ -44,7 +44,7 @@ public function submit(array $form, array &$form_state) {
     $this->entity->delete();
     watchdog('user', 'Role %name has been deleted.', array('%name' => $this->entity->label()));
     drupal_set_message($this->t('Role %name has been deleted.', array('%name' => $this->entity->label())));
-    $form_state['redirect'] = 'admin/people/roles';
+    $form_state['redirect_route']['route_name'] = 'user.role_list';
   }
 
 }
diff --git a/core/modules/user/lib/Drupal/user/ProfileFormController.php b/core/modules/user/lib/Drupal/user/ProfileFormController.php
index ee4f8c3..3c36981 100644
--- a/core/modules/user/lib/Drupal/user/ProfileFormController.php
+++ b/core/modules/user/lib/Drupal/user/ProfileFormController.php
@@ -61,7 +61,11 @@ public function editCancelSubmit($form, &$form_state) {
       $query->remove('destination');
     }
     // We redirect from user/%/edit to user/%/cancel to make the tabs disappear.
-    $form_state['redirect'] = array('user/' . $this->entity->id() . '/cancel', array('query' => $destination));
+    $form_state['redirect_route'] = array(
+      'route_name' => 'user.cancel',
+      'route_parameters' => array('user' => $this->entity->id()),
+      'options' => array('query' => $destination),
+    );
   }
 
 }
diff --git a/core/modules/user/lib/Drupal/user/RegisterFormController.php b/core/modules/user/lib/Drupal/user/RegisterFormController.php
index 6ace140..38612a2 100644
--- a/core/modules/user/lib/Drupal/user/RegisterFormController.php
+++ b/core/modules/user/lib/Drupal/user/RegisterFormController.php
@@ -116,7 +116,7 @@ public function save(array $form, array &$form_state) {
       _user_mail_notify('register_no_approval_required', $account);
       user_login_finalize($account);
       drupal_set_message($this->t('Registration successful. You are now logged in.'));
-      $form_state['redirect'] = '';
+      $form_state['redirect_route']['route_name'] = '<front>';
     }
     // No administrator approval required.
     elseif ($account->isActive() || $notify) {
@@ -131,7 +131,7 @@ public function save(array $form, array &$form_state) {
           }
           else {
             drupal_set_message($this->t('A welcome message with further instructions has been sent to your e-mail address.'));
-            $form_state['redirect'] = '';
+            $form_state['redirect_route']['route_name'] = '<front>';
           }
         }
       }
@@ -140,7 +140,7 @@ public function save(array $form, array &$form_state) {
     else {
       _user_mail_notify('register_pending_approval', $account);
       drupal_set_message($this->t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.<br />In the meantime, a welcome message with further instructions has been sent to your e-mail address.'));
-      $form_state['redirect'] = '';
+      $form_state['redirect_route']['route_name'] = '<front>';
     }
   }
 }
diff --git a/core/modules/user/lib/Drupal/user/RoleFormController.php b/core/modules/user/lib/Drupal/user/RoleFormController.php
index edb242e..01076dd 100644
--- a/core/modules/user/lib/Drupal/user/RoleFormController.php
+++ b/core/modules/user/lib/Drupal/user/RoleFormController.php
@@ -75,14 +75,17 @@ public function save(array $form, array &$form_state) {
       drupal_set_message($this->t('Role %label has been added.', array('%label' => $entity->label())));
       watchdog('user', 'Role %label has been added.', array('%label' => $entity->label()), WATCHDOG_NOTICE, l($this->t('Edit'), $uri['path']));
     }
-    $form_state['redirect'] = 'admin/people/roles';
+    $form_state['redirect_route']['route_name'] = 'user.role_list';
   }
 
   /**
    * {@inheritdoc}
    */
   public function delete(array $form, array &$form_state) {
-    $form_state['redirect'] = 'admin/people/roles/manage/' . $this->entity->id() . '/delete';
+    $form_state['redirect_route'] = array(
+      'route_name' => 'user.role_delete',
+      'route_parameters' => array('user_role' => $this->entity->id()),
+    );
   }
 
 }
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Form/Ajax/Analyze.php b/core/modules/views_ui/lib/Drupal/views_ui/Form/Ajax/Analyze.php
index df8d83c..34fd9d6 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Form/Ajax/Analyze.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Form/Ajax/Analyze.php
@@ -58,7 +58,10 @@ public function buildForm(array $form, array &$form_state) {
    * {@inheritdoc}
    */
   public function submitForm(array &$form, array &$form_state) {
-    $form_state['redirect'] = 'admin/structure/views/view/' . $form_state['view']->id() . '/edit';
+    $form_state['redirect_route'] = array(
+      'route_name' => 'views_ui.edit',
+      'route_parameters' => array('view' => $form_state['view']->id()),
+    );
   }
 
 }
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Form/BreakLockForm.php b/core/modules/views_ui/lib/Drupal/views_ui/Form/BreakLockForm.php
index 646488d..8d0b48d 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Form/BreakLockForm.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Form/BreakLockForm.php
@@ -116,7 +116,10 @@ public function buildForm(array $form, array &$form_state) {
    */
   public function submit(array $form, array &$form_state) {
     $this->tempStore->delete($this->entity->id());
-    $form_state['redirect'] = 'admin/structure/views/view/' . $this->entity->id();
+    $form_state['redirect_route'] = array(
+      'route_name' => 'views_ui.edit',
+      'route_parameters' => array('view' => $this->entity->id()),
+    );
     drupal_set_message($this->t('The lock has been broken and you may now edit this view.'));
   }
 
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/ViewAddFormController.php b/core/modules/views_ui/lib/Drupal/views_ui/ViewAddFormController.php
index 6bd5439..5e65fd94 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/ViewAddFormController.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/ViewAddFormController.php
@@ -195,12 +195,15 @@ public function submit(array $form, array &$form_state) {
     // @todo Figure out whether it really makes sense to throw and catch exceptions on the wizard.
     catch (WizardException $e) {
       drupal_set_message($e->getMessage(), 'error');
-      $form_state['redirect'] = 'admin/structure/views';
+      $form_state['redirect_route']['route_name'] = 'views_ui.list';
       return;
     }
     $view->save();
 
-    $form_state['redirect'] = array('admin/structure/views/view/' . $view->id());
+    $form_state['redirect_route'] = array(
+      'route_name' => 'views_ui.edit',
+      'route_parameters' => array('view' => $view->id()),
+    );
   }
 
   /**
@@ -212,7 +215,7 @@ public function submit(array $form, array &$form_state) {
    *   A reference to a keyed array containing the current state of the form.
    */
   public function cancel(array $form, array &$form_state) {
-    $form_state['redirect'] = 'admin/structure/views';
+    $form_state['redirect_route']['route_name'] = 'views_ui.list';
   }
 
 }
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/ViewDeleteFormController.php b/core/modules/views_ui/lib/Drupal/views_ui/ViewDeleteFormController.php
index 251dc6f..4580db1 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/ViewDeleteFormController.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/ViewDeleteFormController.php
@@ -44,7 +44,7 @@ public function submit(array $form, array &$form_state) {
     parent::submit($form, $form_state);
 
     $this->entity->delete();
-    $form_state['redirect'] = 'admin/structure/views';
+    $form_state['redirect_route']['route_name'] = 'views_ui.list';
   }
 
 }
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php b/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php
index 5f81565..6bb082e 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/ViewEditFormController.php
@@ -266,7 +266,10 @@ public function submit(array $form, array &$form_state) {
         $displays[$new_id] = $displays[$id];
         unset($displays[$id]);
         // Redirect the user to the renamed display to be sure that the page itself exists and doesn't throw errors.
-        $form_state['redirect'] = 'admin/structure/views/view/' . $view->id() . '/edit/' . $new_id;
+        $form_state['redirect_route'] = array(
+          'route_name' => 'views_ui.edit_display',
+          'route_parameters' => array('view' => $view->id(), 'display_id' => $id),
+        );
       }
     }
     $view->set('display', $displays);
@@ -316,7 +319,7 @@ public function cancel(array $form, array &$form_state) {
     // Remove this view from cache so edits will be lost.
     $view = $this->entity;
     $this->tempStore->delete($view->id());
-    $form_state['redirect'] = 'admin/structure/views';
+    $form_state['redirect_route']['route_name'] = 'views_ui.list';
   }
 
   /**
@@ -563,7 +566,10 @@ public function submitDisplayUndoDelete($form, &$form_state) {
     $view->cacheSet();
 
     // Redirect to the top-level edit page.
-    $form_state['redirect'] = 'admin/structure/views/view/' . $view->id() . '/edit/' . $id;
+    $form_state['redirect_route'] = array(
+      'route_name' => 'views_ui.edit_display',
+      'route_parameters' => array('view' => $view->id(), 'display_id' => $id),
+    );
   }
 
   /**
@@ -579,7 +585,10 @@ public function submitDisplayEnable($form, &$form_state) {
     $view->cacheSet();
 
     // Redirect to the top-level edit page.
-    $form_state['redirect'] = 'admin/structure/views/view/' . $view->id() . '/edit/' . $id;
+    $form_state['redirect_route'] = array(
+      'route_name' => 'views_ui.edit_display',
+      'route_parameters' => array('view' => $view->id(), 'display_id' => $id),
+    );
   }
 
   /**
@@ -594,7 +603,10 @@ public function submitDisplayDisable($form, &$form_state) {
     $view->cacheSet();
 
     // Redirect to the top-level edit page.
-    $form_state['redirect'] = 'admin/structure/views/view/' . $view->id() . '/edit/' . $id;
+    $form_state['redirect_route'] = array(
+      'route_name' => 'views_ui.edit_display',
+      'route_parameters' => array('view' => $view->id(), 'display_id' => $id),
+    );
   }
 
   /**
@@ -612,7 +624,10 @@ public function submitDisplayDelete($form, &$form_state) {
 
     // Redirect to the top-level edit page. The first remaining display will
     // become the active display.
-    $form_state['redirect'] = 'admin/structure/views/view/' . $view->id();
+    $form_state['redirect_route'] = array(
+      'route_name' => 'views_ui.edit',
+      'route_parameters' => array('view' => $view->id()),
+    );
   }
 
   /**
@@ -785,7 +800,10 @@ public function submitDisplayDuplicate($form, &$form_state) {
     $view->cacheSet();
 
     // Redirect to the new display's edit page.
-    $form_state['redirect'] = 'admin/structure/views/view/' . $view->id() . '/edit/' . $new_display_id;
+    $form_state['redirect_route'] = array(
+      'route_name' => 'views_ui.edit_display',
+      'route_parameters' => array('view' => $view->id(), 'display_id' => $new_display_id),
+    );
   }
 
   /**
@@ -804,7 +822,10 @@ public function submitDisplayAdd($form, &$form_state) {
     $view->cacheSet();
 
     // Redirect to the new display's edit page.
-    $form_state['redirect'] = 'admin/structure/views/view/' . $view->id() . '/edit/' . $display_id;
+    $form_state['redirect_route'] = array(
+      'route_name' => 'views_ui.edit_display',
+      'route_parameters' => array('view' => $view->id(), 'display_id' => $display_id),
+    );
   }
 
   /**
@@ -837,7 +858,10 @@ public function submitCloneDisplayAsType($form, &$form_state) {
     $view->cacheSet();
 
     // Redirect to the new display's edit page.
-    $form_state['redirect'] = 'admin/structure/views/view/' . $view->id() . '/edit/' . $new_display_id;
+    $form_state['redirect_route'] = array(
+      'route_name' => 'views_ui.edit_display',
+      'route_parameters' => array('view' => $view->id(), 'display_id' => $new_display_id),
+    );
   }
 
   /**
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/ViewUI.php b/core/modules/views_ui/lib/Drupal/views_ui/ViewUI.php
index 84bfde1..61505ae 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/ViewUI.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/ViewUI.php
@@ -277,7 +277,10 @@ public function standardCancel($form, &$form_state) {
       $this->cacheSet();
     }
 
-    $form_state['redirect'] = 'admin/structure/views/view/' . $this->id() . '/edit';
+    $form_state['redirect_route'] = array(
+      'route_name' => 'views_ui.edit',
+      'route_parameters' => array('view' => $this->id()),
+    );
   }
 
   /**
