diff --git a/config/install/redirect.settings.yml b/config/install/redirect.settings.yml
index 65c0e7a..7707df9 100644
--- a/config/install/redirect.settings.yml
+++ b/config/install/redirect.settings.yml
@@ -11,3 +11,4 @@ access_check: false
 normalize_aliases: true
 content_location_header: false
 term_path_handler: true
+log_404: true
diff --git a/config/schema/redirect.schema.yml b/config/schema/redirect.schema.yml
index 1a521a6..9c59474 100644
--- a/config/schema/redirect.schema.yml
+++ b/config/schema/redirect.schema.yml
@@ -45,4 +45,7 @@ redirect.settings:
       label: 'Set Content Location Header'
     term_path_handler:
       type: boolean
-      label: 'Taxonomy Term Path Handler'
\ No newline at end of file
+      label: 'Taxonomy Term Path Handler'
+    log_404:
+       type: boolean
+       label: 'Log 404 errors'
diff --git a/redirect.install b/redirect.install
index 4acfd13..126cecf 100644
--- a/redirect.install
+++ b/redirect.install
@@ -4,12 +4,53 @@
  * Update hooks for the Redirect module.
  */
 
+use Drupal\Core\Language\LanguageInterface;
 use Drupal\redirect\Entity\Redirect;
 use Drupal\Core\Database\Database;
 use Drupal\views\Entity\View;
 use Symfony\Component\Yaml\Yaml;
 
 /**
+ * Implements hook_schema().
+ */
+function redirect_schema() {
+  $schema['redirect_404'] = [
+    'description' => 'Stores 404 requests.',
+    'fields' => [
+      'path' => [
+        'type' => 'varchar',
+        'length' => 191,
+        'not null' => TRUE,
+        'description' => 'The path of the request',
+      ],
+      'langcode' => [
+        'description' => 'The language of this request',
+        'type' => 'varchar_ascii',
+        'length' => 12,
+        'not null' => TRUE,
+        'default' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+      ],
+      'count' => [
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => 'The number of requests with that path and language',
+      ],
+      'timestamp' => [
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => 'The timestamp of the last request with that path and language.',
+      ],
+    ],
+    'primary key' => ['path', 'langcode'],
+  ];
+  return $schema;
+}
+
+/**
  * Rehash redirects to account for case insensitivity.
  */
 function redirect_update_8100(&$sandbox) {
@@ -45,7 +86,6 @@ function redirect_update_8100(&$sandbox) {
   $sandbox['#finished'] = empty($sandbox['max']) ? 1 : ($sandbox['progress'] / $sandbox['max']);
 }
 
-
 /**
  * Update the {redirect} table.
  */
@@ -148,3 +188,52 @@ function redirect_update_8103() {
   }
   return $message;
 }
+
+/**
+ * Add redirect_404 table.
+ */
+function redirect_update_8104() {
+  $schema = [
+    'description' => 'Stores 404 requests.',
+    'fields' => [
+      'path' => [
+        'type' => 'varchar',
+        'length' => 191,
+        'not null' => TRUE,
+        'description' => 'The path of the request',
+      ],
+      'langcode' => [
+        'description' => 'The language of this request',
+        'type' => 'varchar_ascii',
+        'length' => 12,
+        'not null' => TRUE,
+        'default' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+      ],
+      'count' => [
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 1,
+        'description' => 'The number of requests with that path and language',
+      ],
+      'timestamp' => [
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 1,
+        'description' => 'The timestamp of the last request with that path and language.',
+      ],
+    ],
+    'primary key' => ['path', 'langcode'],
+  ];
+  \Drupal::database()->schema()->createTable('redirect_404', $schema);
+
+  // Enable the setting if the dblog module is enabled.
+  if (\Drupal::moduleHandler()->moduleExists('dblog')) {
+    \Drupal::configFactory()->getEditable('redirect.settings')
+      ->set('log_404', TRUE)
+      ->save();
+  }
+
+  // We don't do any data migration as watchdog records are volatile.
+}
diff --git a/redirect.services.yml b/redirect.services.yml
index 2d6a810..ca4a955 100644
--- a/redirect.services.yml
+++ b/redirect.services.yml
@@ -17,3 +17,12 @@ services:
         arguments: ['@cache_tags.invalidator']
         tags:
           - { name: event_subscriber }
+  redirect.404_subscriber:
+    class: Drupal\redirect\EventSubscriber\Redirect404Subscriber
+    arguments: ['@config.factory', '@path.current', '@language_manager', '@redirect.not_found_storage']
+    tags:
+      - {name: event_subscriber}
+  redirect.not_found_storage:
+    class: Drupal\redirect\RedirectNotFoundStorage
+    arguments: ['@database']
+
diff --git a/src/Entity/Redirect.php b/src/Entity/Redirect.php
index 8042855..60337ed 100644
--- a/src/Entity/Redirect.php
+++ b/src/Entity/Redirect.php
@@ -13,7 +13,6 @@ use Drupal\Core\Entity\ContentEntityBase;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Field\BaseFieldDefinition;
-use Drupal\Core\Language\LanguageInterface;
 use Drupal\link\LinkItemInterface;
 
 /**
diff --git a/src/EventSubscriber/Redirect404Subscriber.php b/src/EventSubscriber/Redirect404Subscriber.php
new file mode 100644
index 0000000..4eac3a0
--- /dev/null
+++ b/src/EventSubscriber/Redirect404Subscriber.php
@@ -0,0 +1,98 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\redirect\EventSubscriber\Redirect404Subscriber.
+ */
+
+namespace Drupal\redirect\EventSubscriber;
+
+use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\Language\LanguageManagerInterface;
+use Drupal\Core\Path\CurrentPathStack;
+use Drupal\redirect\RedirectNotFoundStorage;
+use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+use Symfony\Component\HttpKernel\KernelEvents;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * An EventSubscriber that listens to redirect 404 errors.
+ */
+class Redirect404Subscriber implements EventSubscriberInterface {
+
+  /**
+   * The configuration factory instance.
+   *
+   * @var \Drupal\Core\Config\Config
+   */
+  protected $configFactory;
+
+  /**
+   * The current path.
+   *
+   * @var \Drupal\Core\Path\CurrentPathStack
+   */
+  protected $currentPath;
+
+  /**
+   * The language manager.
+   *
+   * @var \Drupal\Core\Language\LanguageManagerInterface
+   */
+  protected $languageManager;
+
+  /**
+   * The redirect storage.
+   *
+   * @var \Drupal\redirect\RedirectNotFoundStorage
+   */
+  protected $redirectStorage;
+
+  /**
+   * Constructs a new RedirectNotFoundStorage.
+   *
+   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
+   *   A configuration factory instance.
+   * @param \Drupal\Core\Path\CurrentPathStack $current_path
+   *   The current path.
+   * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
+   *   The language manager.
+   * @param \Drupal\redirect\RedirectNotFoundStorage $redirect_storage
+   *   A redirect storage.
+   */
+  public function __construct(ConfigFactoryInterface $config_factory, CurrentPathStack $current_path, LanguageManagerInterface $language_manager, RedirectNotFoundStorage $redirect_storage) {
+    $this->configFactory = $config_factory->get('redirect.settings');
+    $this->currentPath = $current_path;
+    $this->languageManager = $language_manager;
+    $this->redirectStorage = $redirect_storage;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getSubscribedEvents() {
+    $events[KernelEvents::EXCEPTION][] = 'onKernelException';
+    return $events;
+  }
+
+  /**
+   * Logs an exception of 404 Redirect errors.
+   *
+   * @param GetResponseForExceptionEvent $event
+   *   Is given by the event dispatcher.
+   */
+  public function onKernelException(GetResponseForExceptionEvent $event) {
+    // Log 404 only exceptions.
+    if ($event->getException() instanceof NotFoundHttpException) {
+      if (!$this->configFactory->get('log_404')) {
+        return;
+      }
+
+      // Write record.
+      $path = $this->currentPath->getPath();
+      $langcode = $this->languageManager->getCurrentLanguage()->getId();
+      $this->redirectStorage->logRequest($path, $langcode);
+    }
+  }
+
+}
diff --git a/src/Form/RedirectFix404Form.php b/src/Form/RedirectFix404Form.php
index 3dd1dda..09fa0b0 100644
--- a/src/Form/RedirectFix404Form.php
+++ b/src/Form/RedirectFix404Form.php
@@ -1,5 +1,4 @@
 <?php
-
 /**
  * @file
  * Contains \Drupal\redirect\Form\RedirectFix404Form
@@ -7,12 +6,11 @@
 
 namespace Drupal\redirect\Form;
 
-use Drupal\Component\Utility\SafeMarkup;
-use Drupal\Core\Database\Query\SelectInterface;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Language\LanguageInterface;
+use Drupal\Core\Link;
 use Drupal\Core\Url;
-use Symfony\Component\HttpFoundation\Request;
 
 class RedirectFix404Form extends FormBase {
 
@@ -27,23 +25,14 @@ class RedirectFix404Form extends FormBase {
    * {@inheritdoc}
    */
   public function buildForm(array $form, FormStateInterface $form_state) {
-    $destination = drupal_get_destination();
+    $destination = $this->getDestinationArray();
 
     $search = $this->getRequest()->get('search');
     $form['#attributes'] = array('class' => array('search-form'));
 
-    // The following requires the dblog module. If it's not available, provide a message.
-    if (! \Drupal::moduleHandler()->moduleExists('dblog')) {
-      $form['message'] = [
-        '#type' => 'markup',
-        '#markup' => t('This page requires the Database Logging (dblog) module, which is currently not installed.'),
-      ];
-      return $form;
-    }
-
     $form['basic'] = array(
       '#type' => 'fieldset',
-      '#title' => t('Filter 404s'),
+      '#title' => $this->t('Filter 404s'),
       '#attributes' => array('class' => array('container-inline')),
     );
     $form['basic']['filter'] = array(
@@ -55,72 +44,62 @@ class RedirectFix404Form extends FormBase {
     );
     $form['basic']['submit'] = array(
       '#type' => 'submit',
-      '#value' => t('Filter'),
+      '#value' => $this->t('Filter'),
       '#action' => 'filter',
     );
     if ($search) {
       $form['basic']['reset'] = array(
         '#type' => 'submit',
-        '#value' => t('Reset'),
+        '#value' => $this->t('Reset'),
         '#action' => 'reset',
       );
     }
 
+    $languages = \Drupal::languageManager()->getLanguages(LanguageInterface::STATE_ALL);
+    $multilingual = \Drupal::languageManager()->isMultilingual();
+
     $header = array(
-      array('data' => t('Page'), 'field' => 'message'),
-      array('data' => t('Count'), 'field' => 'count', 'sort' => 'desc'),
-      array('data' => t('Last accessed'), 'field' => 'timestamp'),
-      array('data' => t('Operations')),
+      array('data' => $this->t('Path'), 'field' => 'path'),
+      array('data' => $this->t('Count'), 'field' => 'count', 'sort' => 'desc'),
+      array('data' => $this->t('Last accessed'), 'field' => 'timestamp'),
     );
+    if ($multilingual) {
+      $header[] = array('data' => $this->t('Language'), 'field' => 'langcode');
+    }
+    $header[] = array('data' => $this->t('Operations'));
 
-    $count_query = db_select('watchdog', 'w');
-    $count_query->addExpression('COUNT(DISTINCT(w.message))');
-    $count_query->leftJoin('redirect', 'r', 'w.message = r.redirect_source__path');
-    $count_query->condition('w.type', 'page not found');
-    $count_query->isNull('r.rid');
-    $this->filterQuery($count_query, array('w.message'), $search);
-
-    $query = db_select('watchdog', 'w')
-      ->extend('Drupal\Core\Database\Query\TableSortExtender')->orderByHeader($header)
-      ->extend('Drupal\Core\Database\Query\PagerSelectExtender')->limit(25);
-    $query->fields('w', array('message', 'variables'));
-    $query->addExpression('COUNT(wid)', 'count');
-    $query->addExpression('MAX(timestamp)', 'timestamp');
-    $query->leftJoin('redirect', 'r', 'w.message = r.redirect_source__path');
-    $query->isNull('r.rid');
-    $query->condition('w.type', 'page not found');
-    $query->groupBy('w.message');
-    $query->groupBy('w.variables');
-    $this->filterQuery($query, array('w.message'), $search);
-    $query->setCountQuery($count_query);
-    $results = $query->execute();
+    /** @var \Drupal\redirect\RedirectNotFoundStorage $redirect_storage */
+    $redirect_storage = \Drupal::service('redirect.not_found_storage');
+    $results = $redirect_storage->listRequests($header, $search);
 
     $rows = array();
     foreach ($results as $result) {
-
-      // @todo Detect the language from the url.
-      $url = SafeMarkup::format($result->message, unserialize($result->variables));
-
-      $request = Request::create($url, 'GET', [], [], [], \Drupal::request()->server->all());
-      $path = ltrim($request->getPathInfo(), '/');
+      $path = ltrim($result->path, '/');
 
       $row = array();
-      $row['source'] = \Drupal::l($url, Url::fromUri('base:' . $path, array('query' => $destination)));
+      $row['path'] = Link::fromTextAndUrl($result->path, Url::fromUri('base:' . $path, array('query' => $destination)));
       $row['count'] = $result->count;
-      $row['timestamp'] = format_date($result->timestamp, 'short');
+      $row['timestamp'] = \Drupal::service('date.formatter')->format($result->timestamp, 'short');
+      if ($multilingual) {
+        if (isset($languages[$result->langcode])) {
+          $row['langcode'] = $languages[$result->langcode]->getName();
+        }
+        else {
+          $row['langcode'] = $this->t('Undefined @langcode', array('@langcode' => $result->langcode));
+        }
+      }
 
       $operations = array();
-      if (\Drupal::entityManager()->getAccessControlHandler('redirect')->createAccess()) {
+      if (\Drupal::entityTypeManager()->getAccessControlHandler('redirect')->createAccess()) {
         $operations['add'] = array(
-          'title' => t('Add redirect'),
-          'url' => Url::fromRoute('redirect.add', [], ['query' => array('source' => $path) + $destination]),
+          'title' =>$this->t('Add redirect'),
+          'url' => Url::fromRoute('redirect.add', [], ['query' => array('path' => $path, 'langcode' => $result->langcode) + $destination]),
         );
       }
       $row['operations'] = array(
         'data' => array(
-          '#theme' => 'links',
+          '#type' => 'operations',
           '#links' => $operations,
-          '#attributes' => array('class' => array('links', 'inline', 'nowrap')),
         ),
       );
 
@@ -131,7 +110,7 @@ class RedirectFix404Form extends FormBase {
       '#theme' => 'table',
       '#header' => $header,
       '#rows' => $rows,
-      '#empty' => t('No 404 pages without redirects found.'),
+      '#empty' => $this->config('redirect.settings')->get('log_404') ? $this->t('No 404 pages without redirects found.') : $this->t('404 requests are currently not logged, enable it in the Settings.'),
     );
     $form['redirect_404_pager'] = array('#type' => 'pager');
     return $form;
@@ -150,24 +129,4 @@ class RedirectFix404Form extends FormBase {
     }
   }
 
-  /**
-   * Extends a query object for URL redirect filters.
-   *
-   * @param $query
-   *   Query object that should be filtered.
-   * @param $keys
-   *   The filter string to use.
-   */
-  protected function filterQuery(SelectInterface $query, array $fields, $keys = '') {
-    if ($keys && $fields) {
-      // Replace wildcards with PDO wildcards.
-      $conditions = db_or();
-      $wildcard = '%' . trim(preg_replace('!\*+!', '%', db_like($keys)), '%') . '%';
-      foreach ($fields as $field) {
-        $conditions->condition($field, $wildcard, 'LIKE');
-      }
-      $query->condition($conditions);
-    }
-  }
-
 }
diff --git a/src/Form/RedirectSettingsForm.php b/src/Form/RedirectSettingsForm.php
index 1cd8e12..14c68bd 100644
--- a/src/Form/RedirectSettingsForm.php
+++ b/src/Form/RedirectSettingsForm.php
@@ -1,5 +1,4 @@
 <?php
-
 /**
  * @file
  * Contains \Drupal\redirect\Form\RedirectSettingsForm
@@ -55,6 +54,12 @@ class RedirectSettingsForm extends ConfigFormBase {
       '#options' => redirect_status_code_options(),
       '#default_value' => $config->get('default_status_code'),
     );
+    $form['redirect_404_log'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Log 404 errors.'),
+      '#default_value' => $config->get('log_404'),
+      '#description' => t('Logging 404 error allows to easily create redirects for often requested but missing pages.'),
+    );
     $form['globals'] = array(
       '#type' => 'fieldset',
       '#title' => $this->t('Global redirects'),
diff --git a/src/RedirectChecker.php b/src/RedirectChecker.php
index c750b4c..8709ba4 100644
--- a/src/RedirectChecker.php
+++ b/src/RedirectChecker.php
@@ -1,5 +1,4 @@
 <?php
-
 /**
  * @file
  * Contains Drupal\redirect\RedirectChecker.
diff --git a/src/RedirectNotFoundStorage.php b/src/RedirectNotFoundStorage.php
new file mode 100644
index 0000000..5a47e18
--- /dev/null
+++ b/src/RedirectNotFoundStorage.php
@@ -0,0 +1,83 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\redirect\RedirectNotFoundStorage.
+ */
+
+namespace Drupal\redirect;
+
+use Drupal\Core\Database\Connection;
+
+/**
+ * Controller class for redirect not found storage.
+ */
+class RedirectNotFoundStorage {
+
+  /**
+   * Active database connection.
+   *
+   * @var \Drupal\Core\Database\Connection
+   */
+  protected $database;
+
+  /**
+   * Constructs a new RedirectNotFoundStorage.
+   *
+   * @param \Drupal\Core\Database\Connection $database
+   *   A Database connection to use for reading and writing database data.
+   */
+  public function __construct(Connection $database) {
+    $this->database = $database;
+  }
+
+  /**
+   * Merges the records to the redirect_404 table.
+   *
+   * @param string $path
+   *   The path of the current request.
+   * @param string $langcode
+   *   The ID of the language code.
+   */
+  public function logRequest($path, $langcode) {
+    $this->database->merge('redirect_404')
+      ->key('path', $path)
+      ->key('langcode', $langcode)
+      ->expression('count', 'count + 1')
+      ->fields([
+        'timestamp' => REQUEST_TIME,
+        'count' => 1,
+      ])
+      ->execute();
+  }
+
+  /**
+   * Gets the plain database query object for the redirect_404 table as a list.
+   *
+   * @param array $header
+   *   An array containing arrays of the redirect_404 fields data.
+   * @param string $search
+   *   The search text.
+   *
+   * @return \Drupal\Core\Database\Query\SelectInterface $query
+   *   The plain result object of the redirect_404 table query.
+   */
+  public function listRequests(array $header = array(), $search = NULL) {
+    $query = $this->database
+      ->select('redirect_404', 'r404')
+      ->extend('Drupal\Core\Database\Query\TableSortExtender')
+      ->orderByHeader($header)
+      ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
+      ->limit(25)
+      ->fields('r404');
+
+    if ($search) {
+      // Replace wildcards with PDO wildcards.
+      $wildcard = '%' . trim(preg_replace('!\*+!', '%', $this->database->escapeLike($search)), '%') . '%';
+      $query->condition('path', $wildcard, 'LIKE');
+    }
+    $results = $query->execute()->fetchAll();
+
+    return $results;
+  }
+
+}
diff --git a/src/RedirectStorageSchema.php b/src/RedirectStorageSchema.php
index acdb1d9..987a572 100644
--- a/src/RedirectStorageSchema.php
+++ b/src/RedirectStorageSchema.php
@@ -1,5 +1,4 @@
 <?php
-
 /**
  * @file
  * Contains \Drupal\redirect\RedirectStorageSchema.
@@ -27,9 +26,8 @@ class RedirectStorageSchema extends SqlContentEntityStorageSchema {
     ];
     $schema['redirect']['indexes'] += [
       // Limit length to 191.
-      'source_language' => [['redirect_source__path', 191],'language'],
+      'source_language' => [['redirect_source__path', 191], 'language'],
     ];
-
     return $schema;
   }
 
diff --git a/src/Tests/RedirectUILanguageTest.php b/src/Tests/RedirectUILanguageTest.php
index 010f0ba..3352bbd 100644
--- a/src/Tests/RedirectUILanguageTest.php
+++ b/src/Tests/RedirectUILanguageTest.php
@@ -1,11 +1,12 @@
 <?php
-
 /**
  * @file
- * Contains \Drupal\redirect\Tests\RedirectUILanguageTest
+ * Contains \Drupal\redirect\Tests\RedirectUILanguageTest.
  */
 
 namespace Drupal\redirect\Tests;
+
+use Drupal\Core\Url;
 use Drupal\language\Entity\ConfigurableLanguage;
 
 /**
@@ -85,4 +86,43 @@ class RedirectUILanguageTest extends RedirectUITest {
     $this->assertRedirect('es/langpath', '/es/user', 'HTTP/1.1 301 Moved Permanently');
   }
 
+  public function testFix404RedirectList() {
+    $this->drupalLogin($this->drupalCreateUser(array(
+      'administer redirects',
+      'administer languages',
+    )));
+
+    // Add predefined language.
+    $this->drupalPostForm('admin/config/regional/language/add', array('predefined_langcode' => 'fr'), t('Add language'));
+    $this->assertText('French');
+
+    // Visit a non existing page to have the 404 redirect_error entry.
+    $this->drupalGet('fr/testing');
+
+    $redirect = db_select('redirect_404')->fields('redirect_404')->condition('path', 'testing')->execute()->fetchAll();
+    if (count($redirect) == 0) {
+      $this->fail('No record was added');
+    }
+
+    // Go to the "fix 404" page and check the listing.
+    $this->drupalGet('admin/config/search/redirect/404');
+    $this->assertText('testing');
+    $this->assertText('French');
+    $this->clickLink(t('Add redirect'));
+
+    // Check if we generate correct Add redirect url and if the form is
+    // pre-filled.
+    $destination = Url::fromUri('base:admin/config/search/redirect/404')->toString();
+    $this->assertUrl('admin/config/search/redirect/add', ['query' => ['path' => 'testing', 'langcode' => 'fr', 'destination' => $destination]]);
+    $this->assertFieldByName('redirect_source[0][path]', 'testing');
+    $this->assertOptionSelected('edit-language-0-value', 'fr');
+
+    // Save the redirect.
+    $this->drupalPostForm(NULL, array('redirect_redirect[0][uri]' => '/node'), t('Save'));
+    $this->assertUrl('admin/config/search/redirect/404');
+
+    // Check if the redirect works as expected.
+    $this->assertRedirect('fr/testing', 'fr/node', 'HTTP/1.1 301 Moved Permanently');
+  }
+
 }
diff --git a/src/Tests/RedirectUITest.php b/src/Tests/RedirectUITest.php
index e2ace54..bfaf286 100644
--- a/src/Tests/RedirectUITest.php
+++ b/src/Tests/RedirectUITest.php
@@ -1,5 +1,4 @@
 <?php
-
 /**
  * @file
  * Contains \Drupal\redirect\Tests\RedirectUITest
@@ -235,7 +234,7 @@ class RedirectUITest extends WebTestBase {
   public function testFix404Pages() {
     $this->drupalLogin($this->adminUser);
 
-    // Visit a non existing page to have the 404 watchdog entry.
+    // Visit a non existing page to have the 404 redirect_error entry.
     $this->drupalGet('non-existing');
 
     // Go to the "fix 404" page and check the listing.
@@ -246,7 +245,7 @@ class RedirectUITest extends WebTestBase {
     // Check if we generate correct Add redirect url and if the form is
     // pre-filled.
     $destination = Url::fromUri('base:admin/config/search/redirect/404')->toString();
-    $this->assertUrl('admin/config/search/redirect/add', ['query' => ['source' => 'non-existing', 'destination' => $destination]]);
+    $this->assertUrl('admin/config/search/redirect/add', ['query' => ['source' => 'non-existing', 'language' => 'en', 'destination' => $destination]]);
     $this->assertFieldByName('redirect_source[0][path]', 'non-existing');
 
     // Save the redirect.
