diff --git a/amp.module b/amp.module
index 9dc90e4..9d95b82 100644
--- a/amp.module
+++ b/amp.module
@@ -54,7 +54,7 @@ function amp_entity_view_alter(array &$build, EntityInterface $entity, EntityVie
             $build['#attached']['html_head_link'][] = array(
               array(
                 'rel' => 'amphtml',
-                'href' => $config[0]['href'] . '/amp',
+                'href' => $config[0]['href'] . '?_format=url',
               ),
               TRUE,
             );
@@ -314,7 +314,7 @@ function amp_node_form_submit(&$form, FormStateInterface $form_state) {
   // Redirect to the alias if it exists, otherwise use the node URL.
   $url = !empty($path[0]['alias']) ? $path[0]['alias'] : $path[0]['source'];
   if (isset($url)) {
-    $amp_path = $url . "/amp";
+    $amp_path = $url . "?_format=amp";
     $response = new RedirectResponse($amp_path);
     $response->send();
   }
@@ -329,7 +329,7 @@ function amp_node_form_submit_with_warn(&$form, FormStateInterface $form_state)
   // Redirect to the alias if it exists, otherwise use the node URL.
   $url = !empty($path[0]['alias']) ? $path[0]['alias'] : $path[0]['source'];
   if (isset($url)) {
-    $amp_path = $url . "/amp?warnfix";
+    $amp_path = $url . "?_format=amp&warnfix";
     $response = new RedirectResponse($amp_path);
     $response->send();
   }
@@ -366,67 +366,6 @@ function amp_node_settings_submit(&$form, FormStateInterface $form_state) {
 }
 
 /**
- * Implements hook_entity_insert().
- */
-function amp_entity_insert(EntityInterface $entity) {
-  amp_create_amp_alias($entity);
-}
-
-/**
- * Implements hook_entity_update().
- */
-function amp_entity_update(EntityInterface $entity) {
-  // Delete any old AMP aliases.
-  amp_delete_amp_alias($entity);
-  // Create a new AMP alias.
-  amp_create_amp_alias($entity);
-}
-
-/**
- * Implements hook_entity_delete().
- */
-function amp_entity_delete(EntityInterface $entity) {
-  amp_delete_amp_alias($entity);
-}
-
-/**
- * Helper function to create an alias.
- * TODO: Consider moving amp_create_amp_alias and amp_delete_amp_alias functions
- * to their own class and determine how that might affect the D7 module.
- */
-function amp_create_amp_alias(EntityInterface $entity) {
-  if ($entity instanceof EntityViewDisplay || !$entity->hasLinkTemplate('canonical')) {
-    return;
-  }
-  $path = '/' . $entity->toUrl('canonical')->getInternalPath();
-  $langcode = $entity->language()->getId();
-  // First check to see if there is an alias for the node.
-  if ($alias = \Drupal::service('path.alias_storage')->lookupPathAlias($path, $langcode)) {
-
-    // Get a list of all AMP-enabled node types.
-    $enabled_types = node_type_get_names();
-    $type = $entity->getType();
-
-    // Check if the content is AMP enabled.
-    if ($enabled_types[$type] === $type) {
-      // Save an AMP version of the alias.
-      \Drupal::service('path.alias_storage')->save($path . "/amp", $alias . "/amp", $langcode);
-    }
-  }
-}
-
-/**
- * Helper function to delete an alias.
- */
-function amp_delete_amp_alias(EntityInterface $entity) {
-  if ($entity instanceof EntityViewDisplay || !$entity->hasLinkTemplate('canonical')) {
-    return;
-  }
-  $amp_path = '/' . $entity->toUrl('canonical')->getInternalPath() . "/amp";
-  \Drupal::service('path.alias_storage')->delete(array('source' => $amp_path));
-}
-
-/**
  * Implements hook_form_alter().
  */
 function amp_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
@@ -450,22 +389,10 @@ function amp_view_modes_submit(&$form, \Drupal\Core\Form\FormStateInterface $for
   $removed = array_diff($old_values, $new_values);
   $added = array_diff($new_values, $old_values);
   if (is_array($removed) && in_array('amp', $removed) && $type = $form['#bundle']) {
-    // Load all nodes of the type being edited.
-    $storage = \Drupal::entityManager()->getStorage('node');
-    $nids = $storage->getQuery()->condition('type', $type)->execute();
-    $amp_nodes = $storage->loadMultiple($nids);
-    // Remove all AMP aliases for the content type.
-    foreach ($amp_nodes as $amp_node) {
-      amp_delete_amp_alias($amp_node);
-    }
     // If the AMP view was removed, clear cache of AMP-enabled content.
     \Drupal::cache()->delete('amp_enabled_types');
   }
   if (is_array($added) && in_array('amp', $added)) {
-    // Create all AMP aliases for the content type.
-    foreach ($amp_nodes as $amp_node) {
-      amp_create_amp_alias($amp_node);
-    }
     // If the AMP view was added, clear cache of AMP-enabled content.
     \Drupal::cache()->delete('amp_enabled_types');
   }
diff --git a/amp.routing.yml b/amp.routing.yml
index a8828f6..3c759bd 100644
--- a/amp.routing.yml
+++ b/amp.routing.yml
@@ -13,6 +13,7 @@ amp.node_amp_page:
     _title: 'AMP Page'
   requirements:
     _permission: 'access content'
+    _format: amp
   options:
     _amp_route: FALSE
 
diff --git a/src/Routing/AmpContext.php b/src/Routing/AmpContext.php
index 805775d..9984ab3 100644
--- a/src/Routing/AmpContext.php
+++ b/src/Routing/AmpContext.php
@@ -67,9 +67,11 @@ class AmpContext {
       return TRUE;
     }
 
-    // We only want to consider URLs that end with 'amp'.
-    $current_path = \Drupal::service('path.current')->getPath();
-    if (substr($current_path, -3) != 'amp') {
+    // We only want to consider routes with amp as the _format.
+    if (!$route->hasRequirement('_format')) {
+      return FALSE;
+    }
+    else if (!$route->getRequirement('_format') == 'amp') {
       return FALSE;
     }
 
