diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php
index 2e4a7ea..ac29a5a 100644
--- a/core/lib/Drupal/Core/Entity/Entity.php
+++ b/core/lib/Drupal/Core/Entity/Entity.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Language\Language;
 use Drupal\Core\Session\AccountInterface;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
 
 /**
  * Defines a base entity class.
@@ -38,13 +37,6 @@
   protected $enforceIsNew;
 
   /**
-   * The route provider service.
-   *
-   * @var \Drupal\Core\Routing\RouteProviderInterface
-   */
-  protected $routeProvider;
-
-  /**
    * Constructs an Entity object.
    *
    * @param array $values
@@ -153,18 +145,10 @@ public function uri($rel = 'canonical') {
     // The links array might contain URI templates set in annotations.
     $link_templates = $entity_info->getLinkTemplates();
 
-    $template = NULL;
     if (isset($link_templates[$rel])) {
-      try {
-        $template = $this->routeProvider()->getRouteByName($link_templates[$rel])->getPath();
-      }
-      catch (RouteNotFoundException $e) {
-        // Fall back to a non-template-based URI.
-      }
-    }
-    if ($template) {
       // If there is a template for the given relationship type, do the
       // placeholder replacement and use that as the path.
+      $template = $link_templates[$rel];
       $replacements = $this->uriPlaceholderReplacements();
       $uri['path'] = str_replace(array_keys($replacements), array_values($replacements), $template);
 
@@ -386,17 +370,4 @@ public function changed() {
     }
   }
 
-  /**
-   * Wraps the route provider service.
-   *
-   * @return \Drupal\Core\Routing\RouteProviderInterface
-   *   The route provider.
-   */
-  protected function routeProvider() {
-    if (!$this->routeProvider) {
-      $this->routeProvider = \Drupal::service('router.route_provider');
-    }
-    return $this->routeProvider;
-  }
-
 }
diff --git a/core/lib/Drupal/Core/Entity/EntityManager.php b/core/lib/Drupal/Core/Entity/EntityManager.php
index bffc91b..bc07b63 100644
--- a/core/lib/Drupal/Core/Entity/EntityManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityManager.php
@@ -297,15 +297,14 @@ public function getForm(EntityInterface $entity, $operation = 'default', array $
    * {@inheritdoc}
    */
   public function getAdminPath($entity_type, $bundle) {
-    $admin_path = '';
     $entity_info = $this->getDefinition($entity_type);
     // Check for an entity type's admin base path.
-    if ($admin_form = $entity_info->getLinkTemplate('admin-form')) {
-      $route_parameters[$entity_info->getBundleEntityType()] = $bundle;
-      $admin_path = \Drupal::urlGenerator()->getPathFromRoute($admin_form, $route_parameters);
+    if ($entity_info->hasLinkTemplate('admin-form')) {
+      $template = $entity_info->getLinkTemplate('admin-form');
+      return str_replace('{' . $entity_info->getBundleEntityType() . '}', $bundle, $template);
     }
 
-    return $admin_path;
+    return '';
   }
 
   /**
diff --git a/core/modules/action/action.module b/core/modules/action/action.module
index c7de85c..0719d1c 100644
--- a/core/modules/action/action.module
+++ b/core/modules/action/action.module
@@ -66,5 +66,5 @@ function action_entity_info(&$entity_info) {
     ->setForm('edit', 'Drupal\action\ActionEditFormController')
     ->setForm('delete', 'Drupal\action\Form\ActionDeleteForm')
     ->setList('Drupal\action\ActionListController')
-    ->setLinkTemplate('edit-form', 'action.admin_configure');
+    ->setLinkTemplate('edit-form', '/admin/config/system/actions/configure/{action}');
 }
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php
index 4c900da..1c2783d 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php
@@ -36,9 +36,9 @@
  *   base_table = "custom_block",
  *   revision_table = "custom_block_revision",
  *   links = {
- *     "canonical" = "custom_block.edit",
- *     "edit-form" = "custom_block.edit",
- *     "admin-form" = "custom_block.type_edit"
+ *     "canonical" = "/block/{custom_block}",
+ *     "edit-form" = "/block/{custom_block}",
+ *     "admin-form" = "/admin/structure/block/custom-blocks/manage/{custom_block_type}"
  *   },
  *   fieldable = TRUE,
  *   translatable = TRUE,
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlockType.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlockType.php
index f61fa7b..a55ab3f 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlockType.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlockType.php
@@ -36,7 +36,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "custom_block.type_edit"
+ *     "edit-form" = "/admin/structure/block/custom-blocks/manage/{custom_block_type}"
  *   }
  * )
  */
diff --git a/core/modules/block/lib/Drupal/block/Entity/Block.php b/core/modules/block/lib/Drupal/block/Entity/Block.php
index 926ef07..213103e 100644
--- a/core/modules/block/lib/Drupal/block/Entity/Block.php
+++ b/core/modules/block/lib/Drupal/block/Entity/Block.php
@@ -36,7 +36,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "block.admin_edit"
+ *     "edit-form" = "/admin/structure/block/manage/{block}"
  *   }
  * )
  */
diff --git a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
index 62c9e56..de71162 100644
--- a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
@@ -46,9 +46,9 @@
  *     "bundle" = "field_id"
  *   },
  *   links = {
- *     "canonical" = "comment.permalink",
- *     "edit-form" = "comment.edit_page",
- *     "admin-form" = "comment.bundle"
+ *     "canonical" = "/comment/{comment}",
+ *     "edit-form" = "/comment/{comment}/edit",
+ *     "admin-form" = "/admin/structure/comments/manage/{bundle}"
  *   }
  * )
  */
diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/Entity/ConfigQueryTest.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/Entity/ConfigQueryTest.php
index c781d22..5cd1458 100644
--- a/core/modules/config/tests/config_test/lib/Drupal/config_test/Entity/ConfigQueryTest.php
+++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/Entity/ConfigQueryTest.php
@@ -25,6 +25,9 @@
  *     "id" = "id",
  *     "label" = "label",
  *     "uuid" = "uuid"
+ *   },
+ *   links = {
+ *     "edit-form" = "/admin/structure/config_test/manage/{config_query_test}"
  *   }
  * )
  *
diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/Entity/ConfigTest.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/Entity/ConfigTest.php
index 34217a9..ce82d25 100644
--- a/core/modules/config/tests/config_test/lib/Drupal/config_test/Entity/ConfigTest.php
+++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/Entity/ConfigTest.php
@@ -33,7 +33,7 @@
  *     "status" = "status"
  *   },
  *   links = {
- *     "edit-form" = "config_test.entity"
+ *     "edit-form" = "/admin/structure/config_test/manage/{config_test}"
  *   }
  * )
  */
diff --git a/core/modules/config_translation/config_translation.module b/core/modules/config_translation/config_translation.module
index 33a2ee7..8f2f948 100644
--- a/core/modules/config_translation/config_translation.module
+++ b/core/modules/config_translation/config_translation.module
@@ -119,10 +119,12 @@ function config_translation_config_translation_info(&$info) {
       continue;
     }
 
+    $edit_routes = $route_provider->getRoutesByPattern($entity_info->getLinkTemplate('edit-form'))->all();
+
     // Use the entity type as the plugin ID.
     $info[$entity_type] = array(
       'class' => '\Drupal\config_translation\ConfigEntityMapper',
-      'base_route_name' => $entity_info->getLinkTemplate('edit-form'),
+      'base_route_name' => key($edit_routes),
       'title' => '!label !entity_type',
       'names' => array(),
       'entity_type' => $entity_type,
diff --git a/core/modules/contact/lib/Drupal/contact/Entity/Category.php b/core/modules/contact/lib/Drupal/contact/Entity/Category.php
index 2c2166a..a2ba9f7 100644
--- a/core/modules/contact/lib/Drupal/contact/Entity/Category.php
+++ b/core/modules/contact/lib/Drupal/contact/Entity/Category.php
@@ -35,7 +35,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "contact.category_edit"
+ *     "edit-form" = "/admin/structure/contact/manage/{contact_category}"
  *   }
  * )
  */
diff --git a/core/modules/contact/lib/Drupal/contact/Entity/Message.php b/core/modules/contact/lib/Drupal/contact/Entity/Message.php
index f12bbf4..a9d0226 100644
--- a/core/modules/contact/lib/Drupal/contact/Entity/Message.php
+++ b/core/modules/contact/lib/Drupal/contact/Entity/Message.php
@@ -33,7 +33,7 @@
  *     "bundle" = "id"
  *   },
  *   links = {
- *     "admin-form" = "contact.category_edit"
+ *     "admin-form" = "/admin/structure/contact/manage/{contact_category}"
  *   }
  * )
  */
diff --git a/core/modules/content_translation/content_translation.module b/core/modules/content_translation/content_translation.module
index 70d20dc..2477de5 100644
--- a/core/modules/content_translation/content_translation.module
+++ b/core/modules/content_translation/content_translation.module
@@ -114,10 +114,10 @@ function content_translation_entity_info_alter(array &$entity_info) {
         $translation['content_translation'] = array();
       }
 
-      if ($info->hasLinkTemplate('canonical')) {
+      if ($canonical = $info->getLinkTemplate('canonical')) {
         // Provide default route names for the translation paths.
         if (!$info->hasLinkTemplate('drupal:content-translation-overview')) {
-          $info->setLinkTemplate('drupal:content-translation-overview', "content_translation.translation_overview_$entity_type");
+          $info->setLinkTemplate('drupal:content-translation-overview', "$canonical/translations");
         }
         // @todo Remove this as soon as menu access checks rely on the
         //   controller. See https://drupal.org/node/2155787.
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Form/ContentTranslationDeleteForm.php b/core/modules/content_translation/lib/Drupal/content_translation/Form/ContentTranslationDeleteForm.php
index 5d33cdf..0043a96 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Form/ContentTranslationDeleteForm.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Form/ContentTranslationDeleteForm.php
@@ -64,7 +64,7 @@ public function getQuestion() {
    */
   public function getCancelRoute() {
     return array(
-      'route_name' => $this->entity->entityInfo()->getLinkTemplate('drupal:content-translation-overview'),
+      'route_name' => 'content_translation.translation_overview_' . $this->entity->entityType(),
       'route_parameters' => array(
         $this->entity->entityType() => $this->entity->id(),
       ),
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Plugin/Derivative/ContentTranslationContextualLinks.php b/core/modules/content_translation/lib/Drupal/content_translation/Plugin/Derivative/ContentTranslationContextualLinks.php
index 6238799..9b9d6a7 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Plugin/Derivative/ContentTranslationContextualLinks.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Plugin/Derivative/ContentTranslationContextualLinks.php
@@ -54,7 +54,7 @@ public function getDerivativeDefinitions(array $base_plugin_definition) {
     foreach ($this->entityManager->getDefinitions() as $entity_type => $entity_info) {
       if ($entity_info->isTranslatable()) {
         $this->derivatives[$entity_type]['title'] = t('Translate');
-        $this->derivatives[$entity_type]['route_name'] = $entity_info->getLinkTemplate('drupal:content-translation-overview');
+        $this->derivatives[$entity_type]['route_name'] = "content_translation.translation_overview_$entity_type";
         $this->derivatives[$entity_type]['group'] = $entity_type;
       }
     }
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Plugin/Derivative/ContentTranslationLocalTasks.php b/core/modules/content_translation/lib/Drupal/content_translation/Plugin/Derivative/ContentTranslationLocalTasks.php
index fcb25f1..0780073 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Plugin/Derivative/ContentTranslationLocalTasks.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Plugin/Derivative/ContentTranslationLocalTasks.php
@@ -10,6 +10,7 @@
 use Drupal\content_translation\ContentTranslationManagerInterface;
 use Drupal\Component\Plugin\Derivative\DerivativeBase;
 use Drupal\Core\Plugin\Discovery\ContainerDerivativeInterface;
+use Drupal\Core\Routing\RouteProviderInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
@@ -32,16 +33,26 @@ class ContentTranslationLocalTasks extends DerivativeBase implements ContainerDe
   protected $contentTranslationManager;
 
   /**
+   * The route provider.
+   *
+   * @var \Drupal\Core\Routing\RouteProviderInterface
+   */
+  protected $routeProvider;
+
+  /**
    * Constructs a new ContentTranslationLocalTasks.
    *
    * @param string $base_plugin_id
    *   The base plugin ID.
    * @param \Drupal\content_translation\ContentTranslationManagerInterface $content_translation_manager
    *   The content translation manager.
+   * @param \Drupal\Core\Routing\RouteProviderInterface $route_provider
+   *   The route provider.
    */
-  public function __construct($base_plugin_id, ContentTranslationManagerInterface $content_translation_manager) {
+  public function __construct($base_plugin_id, ContentTranslationManagerInterface $content_translation_manager, RouteProviderInterface $route_provider) {
     $this->basePluginId = $base_plugin_id;
     $this->contentTranslationManager = $content_translation_manager;
+    $this->routeProvider = $route_provider;
   }
 
   /**
@@ -50,7 +61,8 @@ public function __construct($base_plugin_id, ContentTranslationManagerInterface
   public static function create(ContainerInterface $container, $base_plugin_id) {
     return new static(
       $base_plugin_id,
-      $container->get('content_translation.manager')
+      $container->get('content_translation.manager'),
+      $container->get('router.route_provider')
     );
   }
 
@@ -60,15 +72,21 @@ public static function create(ContainerInterface $container, $base_plugin_id) {
   public function getDerivativeDefinitions(array $base_plugin_definition) {
     // Create tabs for all possible entity types.
     foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type => $entity_info) {
-      // Find the route name for the translation overview.
-      $translation_route_name = $entity_info->getLinkTemplate('drupal:content-translation-overview');
 
-      $this->derivatives[$translation_route_name] = array(
-        'entity_type' => $entity_type,
-        'title' => 'Translate',
-        'route_name' => $translation_route_name,
-        'base_route' => $entity_info->getLinkTemplate('canonical'),
-      ) + $base_plugin_definition;
+      if ($path = $entity_info->getLinkTemplate('canonical')) {
+        if ($routes = $this->routeProvider->getRoutesByPattern($path)->all()) {
+          // Find the route name for the entity page.
+          $entity_route_name = key($routes);
+          $translation_route_name = "content_translation.translation_overview_$entity_type";
+
+          $this->derivatives[$translation_route_name] = array(
+            'entity_type' => $entity_type,
+            'title' => 'Translate',
+            'route_name' => $translation_route_name,
+            'base_route' => $entity_route_name,
+          ) + $base_plugin_definition;
+        }
+      }
     }
     return parent::getDerivativeDefinitions($base_plugin_definition);
   }
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Routing/ContentTranslationRouteSubscriber.php b/core/modules/content_translation/lib/Drupal/content_translation/Routing/ContentTranslationRouteSubscriber.php
index 105489b..5055bfd 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Routing/ContentTranslationRouteSubscriber.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Routing/ContentTranslationRouteSubscriber.php
@@ -40,11 +40,7 @@ public function __construct(ContentTranslationManagerInterface $content_translat
    */
   protected function alterRoutes(RouteCollection $collection, $provider) {
     foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type => $entity_info) {
-      // Try to get the route from the current collection.
-      if (!$entity_route = $collection->get($entity_info->getLinkTemplate('canonical'))) {
-        continue;
-      }
-      $path = $entity_route->getPath() . '/translations';
+      $path = $entity_info->getLinkTemplate('drupal:content-translation-overview');
 
       $route = new Route(
        $path,
@@ -66,7 +62,7 @@ protected function alterRoutes(RouteCollection $collection, $provider) {
           ),
         )
       );
-      $collection->add($entity_info->getLinkTemplate('drupal:content-translation-overview'), $route);
+      $collection->add("content_translation.translation_overview_$entity_type", $route);
 
       $route = new Route(
         $path . '/add/{source}/{target}',
diff --git a/core/modules/content_translation/tests/Drupal/content_translation/Tests/Menu/ContentTranslationLocalTasksTest.php b/core/modules/content_translation/tests/Drupal/content_translation/Tests/Menu/ContentTranslationLocalTasksTest.php
index 057a9a4..51f958f 100644
--- a/core/modules/content_translation/tests/Drupal/content_translation/Tests/Menu/ContentTranslationLocalTasksTest.php
+++ b/core/modules/content_translation/tests/Drupal/content_translation/Tests/Menu/ContentTranslationLocalTasksTest.php
@@ -36,8 +36,10 @@ public function setUp() {
     $entity_type->expects($this->any())
       ->method('getLinkTemplate')
       ->will($this->returnValueMap(array(
-        array('canonical', 'node.view'),
-        array('drupal:content-translation-overview', 'content_translation.translation_overview_node'),
+        array('canonical', '/node/{node}'),
+        // @todo: this will obviously fail, what is the translation overview
+        // path for nodes?
+        array('drupal:content-translation-overview', '/i/have/no/idea'),
       )));
     $content_translation_manager = $this->getMock('Drupal\content_translation\ContentTranslationManagerInterface');
     $content_translation_manager->expects($this->any())
@@ -46,6 +48,30 @@ public function setUp() {
         'node' => $entity_type,
       )));
     \Drupal::getContainer()->set('content_translation.manager', $content_translation_manager);
+
+    // Route provider for injecting node.view into derivative lookup.
+    $collection = $this->getMockBuilder('Symfony\Component\Routing\RouteCollection')
+      ->disableOriginalConstructor()
+      ->setMethods(array('all'))
+      ->getMock();
+    $collection->expects($this->any())
+      ->method('all')
+      ->will($this->returnValue(array('node.view' => array())));
+    $route_provider = $this->getMock('Drupal\Core\Routing\RouteProviderInterface');
+    $route_provider->expects($this->any())
+      ->method('getRoutesByPattern')
+      ->will($this->returnValue($collection));
+    \Drupal::getContainer()->set('router.route_provider', $route_provider);
+
+    // Stub for t().
+    $string_translation = $this->getMock('Drupal\Core\StringTranslation\TranslationInterface');
+    $string_translation->expects($this->any())
+      ->method('translate')
+      ->will($this->returnCallback(function($string) {return $string;}));
+    \Drupal::getContainer()->set('string_translation', $string_translation);
+
+    // Load the content_translation.module file in order to run the alter hook.
+    require_once DRUPAL_ROOT . '/core/modules/content_translation/content_translation.module';
   }
 
   /**
diff --git a/core/modules/entity/lib/Drupal/entity/Entity/EntityFormMode.php b/core/modules/entity/lib/Drupal/entity/Entity/EntityFormMode.php
index 6275fe5..53ad098 100644
--- a/core/modules/entity/lib/Drupal/entity/Entity/EntityFormMode.php
+++ b/core/modules/entity/lib/Drupal/entity/Entity/EntityFormMode.php
@@ -47,7 +47,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "entity.form_mode_edit"
+ *     "edit-form" = "/admin/structure/display-modes/form/manage/{form_mode}"
  *   }
  * )
  */
diff --git a/core/modules/entity/lib/Drupal/entity/Entity/EntityViewMode.php b/core/modules/entity/lib/Drupal/entity/Entity/EntityViewMode.php
index 1b569a8..38c8266 100644
--- a/core/modules/entity/lib/Drupal/entity/Entity/EntityViewMode.php
+++ b/core/modules/entity/lib/Drupal/entity/Entity/EntityViewMode.php
@@ -48,7 +48,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "entity.view_mode_edit"
+ *     "edit-form" = "/admin/structure/display-modes/view/manage/{view_mode}"
  *   }
  * )
  */
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Plugin/Derivative/FieldUiLocalTask.php b/core/modules/field_ui/lib/Drupal/field_ui/Plugin/Derivative/FieldUiLocalTask.php
index 602acc2..504fa19 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/Plugin/Derivative/FieldUiLocalTask.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/Plugin/Derivative/FieldUiLocalTask.php
@@ -176,19 +176,24 @@ public function getDerivativeDefinitions(array $base_plugin_definition) {
   public function alterLocalTasks(&$local_tasks) {
     foreach ($this->entityManager->getDefinitions() as $entity_type => $entity_info) {
       if ($entity_info->isFieldable() && $entity_info->hasLinkTemplate('admin-form')) {
-        $admin_form = $entity_info->getLinkTemplate('admin-form');
-        $local_tasks["field_ui.fields:overview_$entity_type"]['base_route'] = $admin_form;
-        $local_tasks["field_ui.fields:form_display_overview_$entity_type"]['base_route'] = $admin_form;
-        $local_tasks["field_ui.fields:display_overview_$entity_type"]['base_route'] = $admin_form;
-        $local_tasks["field_ui.fields:field_form_display_default_$entity_type"]['base_route'] = $admin_form;
-        $local_tasks["field_ui.fields:field_display_default_$entity_type"]['base_route'] = $admin_form;
 
-        foreach (entity_get_form_modes($entity_type) as $form_mode => $form_mode_info) {
-          $local_tasks['field_ui.fields:field_form_display_' . $form_mode . '_' . $entity_type]['base_route'] = $admin_form;
-        }
+        $routes = $this->routeProvider->getRoutesByPattern($entity_info->getLinkTemplate('admin-form'))->all();
+        // Pick the first route name.
+        if ($base_route = key($routes)) {
 
-        foreach (entity_get_view_modes($entity_type) as $view_mode => $form_mode_info) {
-          $local_tasks['field_ui.fields:field_display_' . $view_mode . '_' . $entity_type]['base_route'] = $admin_form;
+          $local_tasks["field_ui.fields:overview_$entity_type"]['base_route'] = $base_route;
+          $local_tasks["field_ui.fields:form_display_overview_$entity_type"]['base_route'] = $base_route;
+          $local_tasks["field_ui.fields:display_overview_$entity_type"]['base_route'] = $base_route;
+          $local_tasks["field_ui.fields:field_form_display_default_$entity_type"]['base_route'] = $base_route;
+          $local_tasks["field_ui.fields:field_display_default_$entity_type"]['base_route'] = $base_route;
+
+          foreach (entity_get_form_modes($entity_type) as $form_mode => $form_mode_info) {
+            $local_tasks['field_ui.fields:field_form_display_' . $form_mode . '_' . $entity_type]['base_route'] = $base_route;
+          }
+
+          foreach (entity_get_view_modes($entity_type) as $view_mode => $form_mode_info) {
+            $local_tasks['field_ui.fields:field_display_' . $view_mode . '_' . $entity_type]['base_route'] = $base_route;
+          }
         }
       }
     }
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Routing/RouteSubscriber.php b/core/modules/field_ui/lib/Drupal/field_ui/Routing/RouteSubscriber.php
index b78a88f..84f277a 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/Routing/RouteSubscriber.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/Routing/RouteSubscriber.php
@@ -42,11 +42,7 @@ protected function alterRoutes(RouteCollection $collection, $provider) {
     foreach ($this->manager->getDefinitions() as $entity_type => $entity_info) {
       $defaults = array();
       if ($entity_info->isFieldable() && $entity_info->hasLinkTemplate('admin-form')) {
-        // Try to get the route from the current collection.
-        if (!$entity_route = $collection->get($entity_info->getLinkTemplate('admin-form'))) {
-          continue;
-        }
-        $path = $entity_route->getPath();
+        $path = $entity_info->getLinkTemplate('admin-form');
 
         $route = new Route(
           "$path/fields/{field_instance}",
diff --git a/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php b/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php
index 715820b..7462b8c 100644
--- a/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php
+++ b/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php
@@ -37,7 +37,7 @@
  *     "status" = "status"
  *   },
  *   links = {
- *     "edit-form" = "filter.format_edit"
+ *     "edit-form" = "/admin/config/content/formats/manage/{filter_format}"
  *   }
  * )
  */
diff --git a/core/modules/hal/lib/Drupal/hal/Tests/NormalizerTestBase.php b/core/modules/hal/lib/Drupal/hal/Tests/NormalizerTestBase.php
index 3c0d729..414a284 100644
--- a/core/modules/hal/lib/Drupal/hal/Tests/NormalizerTestBase.php
+++ b/core/modules/hal/lib/Drupal/hal/Tests/NormalizerTestBase.php
@@ -58,7 +58,7 @@
    */
   function setUp() {
     parent::setUp();
-    $this->installSchema('system', array('variable', 'url_alias', 'router'));
+    $this->installSchema('system', array('variable', 'url_alias'));
     $this->installSchema('user', array('users'));
     $this->installSchema('entity_test', array('entity_test'));
     $this->installConfig(array('field', 'language'));
diff --git a/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php b/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php
index aee3ffc..20d079e 100644
--- a/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php
+++ b/core/modules/image/lib/Drupal/image/Entity/ImageStyle.php
@@ -40,7 +40,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "image.style_edit"
+ *     "edit-form" = "/admin/config/media/image-styles/manage/{image_style}"
  *   }
  * )
  */
diff --git a/core/modules/language/lib/Drupal/language/Entity/Language.php b/core/modules/language/lib/Drupal/language/Entity/Language.php
index 6ae4385..5e5f41a 100644
--- a/core/modules/language/lib/Drupal/language/Entity/Language.php
+++ b/core/modules/language/lib/Drupal/language/Entity/Language.php
@@ -37,7 +37,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "language.edit"
+ *     "edit-form" = "/admin/config/regional/language/edit/{language_entity}"
  *   }
  * )
  */
diff --git a/core/modules/menu/menu.module b/core/modules/menu/menu.module
index 0e5ea66..1965f2f 100644
--- a/core/modules/menu/menu.module
+++ b/core/modules/menu/menu.module
@@ -102,7 +102,7 @@ function menu_entity_info(&$entity_info) {
     ->setForm('edit', 'Drupal\menu\MenuFormController')
     ->setForm('delete', 'Drupal\menu\Form\MenuDeleteForm')
     ->setList('Drupal\menu\MenuListController')
-    ->setLinkTemplate('edit-form', 'menu.menu_edit');
+    ->setLinkTemplate('edit-form', '/admin/structure/menu/manage/{menu}');
 
   $entity_info['menu_link']
     ->setForm('delete', 'Drupal\menu\Form\MenuLinkDeleteForm')
diff --git a/core/modules/node/lib/Drupal/node/Entity/Node.php b/core/modules/node/lib/Drupal/node/Entity/Node.php
index fee4c18..a6930d0 100644
--- a/core/modules/node/lib/Drupal/node/Entity/Node.php
+++ b/core/modules/node/lib/Drupal/node/Entity/Node.php
@@ -54,10 +54,10 @@
  *   bundle_entity_type = "node_type",
  *   permission_granularity = "bundle",
  *   links = {
- *     "canonical" = "node.view",
- *     "edit-form" = "node.page_edit",
- *     "version-history" = "node.revision_overview",
- *     "admin-form" = "node.type_edit"
+ *     "canonical" = "/node/{node}",
+ *     "edit-form" = "/node/{node}/edit",
+ *     "version-history" = "/node/{node}/revisions",
+ *     "admin-form" = "/admin/structure/types/manage/{node_type}"
  *   }
  * )
  */
diff --git a/core/modules/node/lib/Drupal/node/Entity/NodeType.php b/core/modules/node/lib/Drupal/node/Entity/NodeType.php
index cec3461..b1c7699 100644
--- a/core/modules/node/lib/Drupal/node/Entity/NodeType.php
+++ b/core/modules/node/lib/Drupal/node/Entity/NodeType.php
@@ -37,7 +37,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "node.type_edit"
+ *     "edit-form" = "/admin/structure/types/manage/{node_type}"
  *   }
  * )
  */
diff --git a/core/modules/picture/lib/Drupal/picture/Entity/PictureMapping.php b/core/modules/picture/lib/Drupal/picture/Entity/PictureMapping.php
index 26a73ac..bcffae3 100644
--- a/core/modules/picture/lib/Drupal/picture/Entity/PictureMapping.php
+++ b/core/modules/picture/lib/Drupal/picture/Entity/PictureMapping.php
@@ -35,7 +35,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "picture.mapping_page_edit"
+ *     "edit-form" = "/admin/config/media/picturemapping/{picture_mapping}"
  *   }
  * )
  */
diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php b/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php
index 29d4084..386fc54 100644
--- a/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php
+++ b/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php
@@ -46,15 +46,6 @@
   public static $modules = array('rdf');
 
   /**
-   * {@inheritdoc}
-   */
-  public function setUp() {
-    parent::setUp();
-
-    $this->installSchema('system', array('router'));
-  }
-
-  /**
    * Helper function to test the formatter's RDFa.
    *
    * @param string $formatter
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Entity/ShortcutSet.php b/core/modules/shortcut/lib/Drupal/shortcut/Entity/ShortcutSet.php
index ef2c480..b228bcb 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Entity/ShortcutSet.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Entity/ShortcutSet.php
@@ -37,7 +37,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "shortcut.set_customize"
+ *     "edit-form" = "/admin/config/user-interface/shortcut/manage/{shortcut_set}"
  *   }
  * )
  */
diff --git a/core/modules/system/lib/Drupal/system/Entity/DateFormat.php b/core/modules/system/lib/Drupal/system/Entity/DateFormat.php
index 5b05252..9ae60b8 100644
--- a/core/modules/system/lib/Drupal/system/Entity/DateFormat.php
+++ b/core/modules/system/lib/Drupal/system/Entity/DateFormat.php
@@ -35,7 +35,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "system.date_format_edit"
+ *     "edit-form" = "/admin/config/regional/date-time/formats/manage/{date_format}"
  *   }
  * )
  */
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
index 9798c4f..5c0a5ff 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
@@ -38,9 +38,9 @@
  *     "label" = "name"
  *   },
  *   links = {
- *     "canonical" = "entity_test.render",
- *     "edit-form" = "entity_test.edit_entity_test",
- *     "admin-form" = "entity_test.admin_entity_test"
+ *     "canonical" = "/entity_test/{entity_test}",
+ *     "edit-form" = "/entity_test/manage/{entity_test}",
+ *     "admin-form" = "/entity_test/structure/{bundle}"
  *   }
  * )
  */
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestMul.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestMul.php
index adfef6e..c0453ed 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestMul.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestMul.php
@@ -36,9 +36,9 @@
  *     "label" = "name"
  *   },
  *   links = {
- *     "canonical" = "entity_test.edit_entity_test_mul",
- *     "edit-form" = "entity_test.edit_entity_test_mul",
- *     "admin-form" = "entity_test.admin_entity_test_mul"
+ *     "canonical" = "/entity_test_mul/manage/{entity_test_mul}",
+ *     "edit-form" = "/entity_test_mul/manage/{entity_test_mul}",
+ *     "admin-form" = "/entity_test_mul/structure/{bundle}"
  *   }
  * )
  */
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestMulRev.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestMulRev.php
index e0dce68..8fc844d 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestMulRev.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestMulRev.php
@@ -37,8 +37,8 @@
  *     "bundle" = "type"
  *   },
  *   links = {
- *     "canonical" = "entity_test.edit_entity_test_mulrev",
- *     "edit-form" = "entity_test.edit_entity_test_mulrev"
+ *     "canonical" = "/entity_test_mulrev/manage/{entity_test_mulrev}",
+ *     "edit-form" = "/entity_test_mulrev/manage/{entity_test_mulrev}"
  *   }
  * )
  */
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestRev.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestRev.php
index a31dcdc..2a05f2f 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestRev.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestRev.php
@@ -34,8 +34,8 @@
  *     "bundle" = "type"
  *   },
  *   links = {
- *     "canonical" = "entity_test.edit_entity_test_rev",
- *     "edit-form" = "entity_test.edit_entity_test_rev"
+ *     "canonical" = "/entity_test_rev/manage/{entity_test_rev}",
+ *     "edit-form" = "/entity_test_rev/manage/{entity_test_rev}"
  *   }
  * )
  */
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
index bf85ab8..6e609fe 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
@@ -46,9 +46,9 @@
  *   },
  *   bundle_entity_type = "taxonomy_vocabulary",
  *   links = {
- *     "canonical" = "taxonomy.term_page",
- *     "edit-form" = "taxonomy.term_edit",
- *     "admin-form" = "taxonomy.overview_terms"
+ *     "canonical" = "/taxonomy/term/{taxonomy_term}",
+ *     "edit-form" = "/taxonomy/term/{taxonomy_term}/edit",
+ *     "admin-form" = "/admin/structure/taxonomy/manage/{taxonomy_vocabulary}"
  *   },
  *   permission_granularity = "bundle"
  * )
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Vocabulary.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Vocabulary.php
index 12facd4..856958c 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Vocabulary.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Vocabulary.php
@@ -36,7 +36,7 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "edit-form" = "taxonomy.overview_terms"
+ *     "edit-form" = "/admin/structure/taxonomy/manage/{taxonomy_vocabulary}"
  *   }
  * )
  */
diff --git a/core/modules/user/lib/Drupal/user/Entity/Role.php b/core/modules/user/lib/Drupal/user/Entity/Role.php
index 2fd26ac..19f9e59 100644
--- a/core/modules/user/lib/Drupal/user/Entity/Role.php
+++ b/core/modules/user/lib/Drupal/user/Entity/Role.php
@@ -36,7 +36,7 @@
  *     "label" = "label"
  *   },
  *   links = {
- *     "edit-form" = "user.role_edit"
+ *     "edit-form" = "/admin/people/roles/manage/{user_role}"
  *   }
  * )
  */
diff --git a/core/modules/user/lib/Drupal/user/Entity/User.php b/core/modules/user/lib/Drupal/user/Entity/User.php
index 2954df5..9776e50 100644
--- a/core/modules/user/lib/Drupal/user/Entity/User.php
+++ b/core/modules/user/lib/Drupal/user/Entity/User.php
@@ -42,9 +42,9 @@
  *     "uuid" = "uuid"
  *   },
  *   links = {
- *     "canonical" = "user.view",
- *     "edit-form" = "user.edit",
- *     "admin-form" = "user.account_settings"
+ *     "canonical" = "/user/{user}",
+ *     "edit-form" = "/user/{user}/edit",
+ *     "admin-form" = "/admin/config/people/accounts"
  *   }
  * )
  */
diff --git a/core/modules/views/lib/Drupal/views/Entity/View.php b/core/modules/views/lib/Drupal/views/Entity/View.php
index f96fbd0..0560abb 100644
--- a/core/modules/views/lib/Drupal/views/Entity/View.php
+++ b/core/modules/views/lib/Drupal/views/Entity/View.php
@@ -32,6 +32,9 @@
  *     "label" = "label",
  *     "uuid" = "uuid",
  *     "status" = "status"
+ *   },
+ *   links = {
+ *     "edit-form" = "/admin/structure/views/view/{view}"
  *   }
  * )
  */
diff --git a/core/modules/views_ui/views_ui.module b/core/modules/views_ui/views_ui.module
index 5afbfc5..611ab98 100644
--- a/core/modules/views_ui/views_ui.module
+++ b/core/modules/views_ui/views_ui.module
@@ -73,7 +73,7 @@ function views_ui_entity_info(&$entity_info) {
     ->setForm('delete', 'Drupal\views_ui\ViewDeleteFormController')
     ->setForm('break_lock', 'Drupal\views_ui\Form\BreakLockForm')
     ->setList('Drupal\views_ui\ViewListController')
-    ->setLinkTemplate('edit-form', 'views_ui.edit');
+    ->setLinkTemplate('edit-form', '/admin/structure/views/view/{view}');
 }
 
 /**
