diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index 2034cda..30a1f0e 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -939,7 +939,8 @@ function comment_form_field_ui_field_instance_edit_form_alter(&$form, $form_stat
  */
 function comment_form_field_ui_field_overview_form_alter(&$form, $form_state) {
   if ($form['#entity_type'] == 'comment') {
-    $form['#title'] = \Drupal::service('comment.manager')->getFieldUIPageTitle($form['#bundle']);
+    $request = \Drupal::request();
+    $form['#title'] = \Drupal::service('comment.manager')->getFieldUIPageTitle($request->attributes->get('commented_entity_type'), $request->attributes->get('field_name'));
   }
 }
 
@@ -948,7 +949,8 @@ function comment_form_field_ui_field_overview_form_alter(&$form, $form_state) {
  */
 function comment_form_field_ui_form_display_overview_form_alter(&$form, $form_state) {
   if ($form['#entity_type'] == 'comment') {
-    $form['#title'] = \Drupal::service('comment.manager')->getFieldUIPageTitle($form['#bundle']);
+    $request = \Drupal::request();
+    $form['#title'] = \Drupal::service('comment.manager')->getFieldUIPageTitle($request->attributes->get('commented_entity_type'), $request->attributes->get('field_name'));
   }
 }
 
@@ -957,7 +959,8 @@ function comment_form_field_ui_form_display_overview_form_alter(&$form, $form_st
  */
 function comment_form_field_ui_display_overview_form_alter(&$form, $form_state) {
   if ($form['#entity_type'] == 'comment') {
-    $form['#title'] = \Drupal::service('comment.manager')->getFieldUIPageTitle($form['#bundle']);
+    $request = \Drupal::request();
+    $form['#title'] = \Drupal::service('comment.manager')->getFieldUIPageTitle($request->attributes->get('commented_entity_type'), $request->attributes->get('field_name'));
   }
 }
 
diff --git a/core/modules/comment/comment.routing.yml b/core/modules/comment/comment.routing.yml
index a61e8c1..b5836f0 100644
--- a/core/modules/comment/comment.routing.yml
+++ b/core/modules/comment/comment.routing.yml
@@ -69,7 +69,7 @@ comment.bundle_list:
     _permission: 'administer comments'
 
 comment.bundle:
-  path: '/admin/structure/comments/manage/{field_name}'
+  path: '/admin/structure/comments/manage/{bundle}'
   defaults:
     _content: 'Drupal\comment\Controller\AdminController::bundleInfo'
     _title_callback: 'Drupal\comment\Controller\AdminController::bundleTitle'
diff --git a/core/modules/comment/comment.services.yml b/core/modules/comment/comment.services.yml
index a82bbe4..084f9b8 100644
--- a/core/modules/comment/comment.services.yml
+++ b/core/modules/comment/comment.services.yml
@@ -8,3 +8,9 @@ services:
   comment.manager:
     class: Drupal\comment\CommentManager
     arguments: ['@field.info', '@entity.manager']
+
+  comment.route_enhancer:
+      class: Drupal\comment\Routing\CommentBundleEnhancer
+      arguments: ['@entity.manager']
+      tags:
+        - { name: route_enhancer}
diff --git a/core/modules/comment/lib/Drupal/comment/CommentManager.php b/core/modules/comment/lib/Drupal/comment/CommentManager.php
index 4b3ab0b..9e2c03e 100644
--- a/core/modules/comment/lib/Drupal/comment/CommentManager.php
+++ b/core/modules/comment/lib/Drupal/comment/CommentManager.php
@@ -226,18 +226,19 @@ public function addBodyField($entity_type, $field_name) {
   /**
    * Builds human readable page title for field_ui management screens.
    *
+   * @param string $commented_entity_type
+   *   The entity type to which the comment field is attached.
    * @param string $field_name
    *   The comment field for which the overview is to be displayed.
    *
    * @return string
    *   The human readable field name.
    */
-  public function getFieldUIPageTitle($field_name) {
-    list($entity_type, $field) = explode('__', $field_name, 2);
-    $field_info = $this->fieldInfo->getField($entity_type, $field);
+  public function getFieldUIPageTitle($commented_entity_type, $field_name) {
+    $field_info = $this->fieldInfo->getField($commented_entity_type, $field_name);
     $bundles = $field_info->getBundles();
     $sample_bundle = reset($bundles);
-    $sample_instance = $this->fieldInfo->getInstance($entity_type, $sample_bundle, $field);
+    $sample_instance = $this->fieldInfo->getInstance($commented_entity_type, $sample_bundle, $field_name);
     return String::checkPlain($sample_instance->label);
   }
 
diff --git a/core/modules/comment/lib/Drupal/comment/Controller/AdminController.php b/core/modules/comment/lib/Drupal/comment/Controller/AdminController.php
index 4f49850..e382594 100644
--- a/core/modules/comment/lib/Drupal/comment/Controller/AdminController.php
+++ b/core/modules/comment/lib/Drupal/comment/Controller/AdminController.php
@@ -169,6 +169,8 @@ public function overviewBundles() {
   /**
    * Returns an overview of the entity types a comment field is attached to.
    *
+   * @param string $commented_entity_type
+   *   The entity type to which the comment field is attached.
    * @param string $field_name
    *   The comment field for which the overview is to be displayed.
    *
@@ -176,17 +178,14 @@ public function overviewBundles() {
    *   A renderable array containing the list of entity types and bundle
    *   combinations on which the comment field is in use.
    */
-  public function bundleInfo($field_name) {
+  public function bundleInfo($commented_entity_type, $field_name) {
     // Add a link to manage entity fields if the Field UI module is enabled.
     $field_ui_enabled = $this->moduleHandler()->moduleExists('field_ui');
 
-    // @todo Provide dynamic routing to get entity type and field name.
-    //   https://drupal.org/node/2098011.
-    list($entity_type, $field) = explode('__', $field_name, 2);
-    $field_info = $this->fieldInfo->getField($entity_type, $field);
+    $field_info = $this->fieldInfo->getField($commented_entity_type, $field_name);
 
-    $entity_type_info = $this->entityManager()->getDefinition($entity_type);
-    $entity_bundle_info = $this->entityManager()->getBundleInfo($entity_type);
+    $entity_type_info = $this->entityManager()->getDefinition($commented_entity_type);
+    $entity_bundle_info = $this->entityManager()->getBundleInfo($commented_entity_type);
 
     $build['usage'] = array(
       '#theme' => 'item_list',
@@ -196,7 +195,7 @@ public function bundleInfo($field_name) {
     // Loop over all of bundles to which this comment field is attached.
     foreach ($field_info->getBundles() as $bundle) {
       // Add the current instance to the list of bundles.
-      if ($field_ui_enabled && ($route_info = $this->entityManager()->getAdminRouteInfo($entity_type, $bundle))) {
+      if ($field_ui_enabled && ($route_info = $this->entityManager()->getAdminRouteInfo($commented_entity_type, $bundle))) {
         // Add a link to configure the fields on the given bundle and entity
         // type combination.
         $build['usage']['#items'][] = $this->l($entity_bundle_info[$bundle]['label'], $route_info['route_name'], $route_info['route_parameters']);
@@ -214,14 +213,16 @@ public function bundleInfo($field_name) {
   /**
    * Route title callback.
    *
+   * @param string $commented_entity_type
+   *   The entity type to which the comment field is attached.
    * @param string $field_name
    *   The comment field for which the overview is to be displayed.
    *
    * @return string
    *   The human readable field name.
    */
-  public function bundleTitle($field_name) {
-    return $this->commentManager->getFieldUIPageTitle($field_name);
+  public function bundleTitle($commented_entity_type, $field_name) {
+    return $this->commentManager->getFieldUIPageTitle($commented_entity_type, $field_name);
   }
 
 }
diff --git a/core/modules/comment/lib/Drupal/comment/Routing/CommentBundleEnhancer.php b/core/modules/comment/lib/Drupal/comment/Routing/CommentBundleEnhancer.php
new file mode 100644
index 0000000..bc0ed8c
--- /dev/null
+++ b/core/modules/comment/lib/Drupal/comment/Routing/CommentBundleEnhancer.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\comment\Routing\CommentBundleEnhancer.
+ */
+
+namespace Drupal\comment\Routing;
+
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface;
+use Symfony\Cmf\Component\Routing\RouteObjectInterface;
+use Drupal\Core\Entity\EntityManager;
+
+/**
+ * Constructs a route enhancer to extract values from comment bundles.
+ *
+ * Comment bundle names are of the form {entity_type}__{field_name}. This
+ * enhancer extracts them from the path and makes them available as arguments
+ * to controllers.
+ */
+class CommentBundleEnhancer implements RouteEnhancerInterface {
+
+  /**
+   * The entity manager service.
+   *
+   * @var \Drupal\Core\Entity\EntityManager
+   */
+  protected $entityManager;
+
+  /**
+   * Constructs a CommentBundleEnhancer object.
+   */
+  public function __construct(EntityManager $entity_manager) {
+    $this->entityManager = $entity_manager;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function enhance(array $defaults, Request $request) {
+    $bundles = $this->entityManager->getBundleInfo('comment');
+    if (isset($defaults['bundle']) && isset($bundles[$defaults['bundle']])) {
+      list($entity_type, $field_name) = explode('__', $defaults['bundle'], 2);
+      $defaults['commented_entity_type'] = $entity_type;
+      $defaults['field_name'] = $field_name;
+    }
+    return $defaults;
+  }
+
+}
diff --git a/core/modules/comment/tests/Drupal/comment/Tests/Routing/CommentBundleEnhancerTest.php b/core/modules/comment/tests/Drupal/comment/Tests/Routing/CommentBundleEnhancerTest.php
new file mode 100644
index 0000000..9511cdb
--- /dev/null
+++ b/core/modules/comment/tests/Drupal/comment/Tests/Routing/CommentBundleEnhancerTest.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\comment\Tests\Routing\CommentBundleEnhancerTest.
+ */
+namespace Drupal\comment\Tests\Routing;
+
+use Drupal\comment\Routing\CommentBundleEnhancer;
+use Drupal\Tests\UnitTestCase;
+use Symfony\Component\HttpFoundation\Request;
+
+/**
+ * Tests the comment bundle enhancer route enhancer.
+ *
+ * @see \Drupal\comment\Routing\CommentBundleEnhancer
+ */
+class CommentBundleEnhancerTest extends UnitTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Comment route enhancer test',
+      'description' => 'Tests the comment route enhancer.',
+      'group' => 'Comment'
+    );
+  }
+
+  /**
+   * Tests the enhancer method.
+   *
+   * @see \Drupal\comment\Routing\CommentBundleEnhancer::enhancer()
+   */
+  public function testEnhancer() {
+    $entityManager = $this->getMockBuilder('\Drupal\Core\Entity\EntityManager')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $entityManager->expects($this->any())
+      ->method('getBundleInfo')
+      ->will($this->returnValue(array(
+        'node__comment' => array(),
+        'node__comment_forum' => array(),
+      )));
+    $route_enhancer = new CommentBundleEnhancer($entityManager);
+
+    // Test with a comment bundle.
+    $request = new Request();
+    $defaults = array('bundle' => 'node__comment');
+    $new_defaults = $route_enhancer->enhance($defaults, $request);
+    $this->assertEquals($new_defaults['field_name'], 'comment');
+    $this->assertEquals($new_defaults['commented_entity_type'], 'node');
+
+    // Test again with a non-comment bundle
+    $request = new Request();
+    $defaults = array('bundle' => 'node__field_foobar');
+    $new_defaults = $route_enhancer->enhance($defaults, $request);
+    $this->assertTrue(empty($new_defaults['field_name']));
+    $this->assertTrue(empty($new_defaults['commented_entity_type']));
+  }
+
+}
