diff --git a/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php b/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php
index a090c67..3c2e2d9 100644
--- a/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php
+++ b/core/modules/system/lib/Drupal/system/Form/ModulesListForm.php
@@ -198,12 +198,14 @@ protected function buildRow(array $modules, $module, $distribution) {
     // Generate link for module's configuration page, if it has one.
     $row['links']['configure'] = array();
     if ($module->status && isset($module->info['configure'])) {
-      if ($this->accessManager->checkNamedRoute($module->info['configure'], array(), \Drupal::currentUser())) {
-        $item = menu_get_item(trim($this->url($module->info['configure']), '/'));
+      $route_parameters = isset($module->info['configure_parameters']) ? $module->info['configure_parameters'] : array();
+      if ($this->accessManager->checkNamedRoute($module->info['configure'], $route_parameters, \Drupal::currentUser())) {
+        $item = menu_get_item(trim($this->url($module->info['configure'], $route_parameters), '/'));
         $row['links']['configure'] = array(
           '#type' => 'link',
           '#title' => $this->t('Configure'),
           '#route_name' => $module->info['configure'],
+          '#route_parameters' => $route_parameters,
           '#options' => array(
             'attributes' => array(
               'class' => array('module-link', 'module-link-configure'),
diff --git a/core/modules/system/tests/modules/system_test/system_test.info.yml b/core/modules/system/tests/modules/system_test/system_test.info.yml
index d5b65e9..eff3630 100644
--- a/core/modules/system/tests/modules/system_test/system_test.info.yml
+++ b/core/modules/system/tests/modules/system_test/system_test.info.yml
@@ -5,3 +5,6 @@ package: Testing
 version: VERSION
 core: 8.x
 hidden: true
+configure: system_test.configure
+configure_parameters:
+  foo: bar
diff --git a/core/modules/system/tests/modules/system_test/system_test.module b/core/modules/system/tests/modules/system_test/system_test.module
index aa93e6d..a2b5250 100644
--- a/core/modules/system/tests/modules/system_test/system_test.module
+++ b/core/modules/system/tests/modules/system_test/system_test.module
@@ -69,6 +69,9 @@ function system_test_system_info_alter(&$info, $file, $type) {
   if ($file->name == 'requirements1_test' || $file->name == 'requirements2_test') {
     $info['hidden'] = FALSE;
   }
+  if ($file->name == 'system_test') {
+    $info['hidden'] = FALSE;
+  }
 }
 
 /**
diff --git a/core/modules/system/tests/modules/system_test/system_test.routing.yml b/core/modules/system/tests/modules/system_test/system_test.routing.yml
index 660cfce..72ac281 100644
--- a/core/modules/system/tests/modules/system_test/system_test.routing.yml
+++ b/core/modules/system/tests/modules/system_test/system_test.routing.yml
@@ -80,3 +80,8 @@ system_test.shutdown_functions:
     _content: '\Drupal\system_test\Controller\SystemTestController::shutdownFunctions'
   requirements:
     _access: 'TRUE'
+
+system_test.configure:
+  path: '/system-test/configure/{foo}'
+  requirements:
+    _access: 'TRUE'
