diff --git a/config_ignore.services.yml b/config_ignore.services.yml
new file mode 100644
index 0000000..763bab9
--- /dev/null
+++ b/config_ignore.services.yml
@@ -0,0 +1,6 @@
+services:
+  config_ignore.route_subscriber:
+    class: Drupal\config_ignore\Routing\RouteSubscriber
+    tags:
+      - { name: event_subscriber }
+
diff --git a/src/Controller/ConfigIgnoreController.php b/src/Controller/ConfigIgnoreController.php
new file mode 100644
index 0000000..31e7c7c
--- /dev/null
+++ b/src/Controller/ConfigIgnoreController.php
@@ -0,0 +1,68 @@
+<?php
+
+namespace Drupal\config_ignore\Controller;
+
+use Drupal\config\Controller\ConfigController;
+use Drupal\Core\Archiver\ArchiveTar;
+use Drupal\Core\Config\ConfigManagerInterface;
+use Drupal\Core\Config\StorageInterface;
+use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
+use Drupal\Core\Diff\DiffFormatter;
+use Drupal\Core\Serialization\Yaml;
+use Drupal\system\FileDownloadController;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\HttpFoundation\Request;
+use Drupal\config_ignore\ConfigImporterIgnore;
+
+/**
+ * Returns responses for config module routes.
+ */
+class ConfigIgnoreController extends ConfigController implements ContainerInjectionInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return parent::create($container);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function __construct(StorageInterface $target_storage, StorageInterface $source_storage, ConfigManagerInterface $config_manager, FileDownloadController $file_download_controller, DiffFormatter $diff_formatter) {
+    parent::__construct($target_storage, $source_storage, $config_manager, $file_download_controller, $diff_formatter);
+  }
+
+  /**
+   * Downloads a tarball of the site configuration filtered by ignored configs.
+   *
+   * This function replaces the Drupal Core config file download function to
+   * export only configs that have not be ignored.
+   *
+   * @see core/modules/config/src/Controller/ConfigController.php
+   */
+  public function downloadExport() {
+    file_unmanaged_delete(file_directory_temp() . '/config.tar.gz');
+
+    $archiver = new ArchiveTar(file_directory_temp() . '/config.tar.gz', 'gz');
+    // Get raw configuration data without overrides.
+    foreach ($this->configManager->getConfigFactory()->listAll() as $name) {
+      if (!ConfigImporterIgnore::matchConfigName($name)) {
+        $archiver->addString("$name.yml", Yaml::encode($this->configManager->getConfigFactory()->get($name)->getRawData()));
+      }
+    }
+    // Get all override data from the remaining collections.
+    foreach ($this->targetStorage->getAllCollectionNames() as $collection) {
+      $collection_storage = $this->targetStorage->createCollection($collection);
+      foreach ($collection_storage->listAll() as $name) {
+        if (!ConfigImporterIgnore::matchConfigName($name)) {
+          $archiver->addString(str_replace('.', '/', $collection) . "/$name.yml", Yaml::encode($collection_storage->read($name)));
+        }
+      }
+    }
+
+    $request = new Request(array('file' => 'config.tar.gz'));
+    return $this->fileDownloadController->download($request, 'temporary');
+  }
+
+}
diff --git a/src/Routing/RouteSubscriber.php b/src/Routing/RouteSubscriber.php
new file mode 100644
index 0000000..1983512
--- /dev/null
+++ b/src/Routing/RouteSubscriber.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Drupal\config_ignore\Routing;
+
+use Drupal\Core\Routing\RouteSubscriberBase;
+use Symfony\Component\Routing\RouteCollection;
+
+/**
+ * Class RouteSubscriber.
+ *
+ * @package Drupal\config_ignore\Routing
+ * Listens to the dynamic route events.
+ */
+class RouteSubscriber extends RouteSubscriberBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function alterRoutes(RouteCollection $collection) {
+    if ($route = $collection->get('config.export_download')) {
+      $route->setDefault('_controller', '\Drupal\config_ignore\Controller\ConfigIgnoreController::downloadExport');
+    }
+  }
+
+}
