diff --git a/amp.module b/amp.module
index 9dc90e4..17039f5 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'] . '?amp',
               ),
               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 . "?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 . "?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..2688aca 100644
--- a/amp.routing.yml
+++ b/amp.routing.yml
@@ -7,7 +7,7 @@ amp.settings:
     _permission: 'administer site configuration'
 
 amp.node_amp_page:
-  path: '/node/{node}/amp'
+  path: '/node/{node}'
   defaults:
     _controller: '\Drupal\amp\Controller\ampPage::amp'
     _title: 'AMP Page'
diff --git a/src/Controller/ampPage.php b/src/Controller/ampPage.php
index 9852809..f56d28d 100644
--- a/src/Controller/ampPage.php
+++ b/src/Controller/ampPage.php
@@ -8,6 +8,7 @@
 namespace Drupal\amp\Controller;
 
 use Drupal\amp\EntityTypeInfo;
+use Drupal\amp\Routing\AmpContext;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Controller\ControllerBase;
 use Drupal\Core\Entity\EntityManagerInterface;
@@ -43,6 +44,9 @@ class ampPage extends ControllerBase {
   /** @var ConfigFactoryInterface $configFactory */
   protected $configFactory;
 
+  /** @var AmpContext $ampContext */
+  protected $ampContext;
+
   /**
    * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
    *   The entity manager service.
@@ -54,11 +58,12 @@ class ampPage extends ControllerBase {
    *   Information about AMP-enabled content types.
    */
   public function __construct(EntityManagerInterface $entity_manager, RendererInterface $renderer, ConfigFactoryInterface
-  $configFactoryInterface, EntityTypeInfo $entity_type_info) {
+  $configFactoryInterface, EntityTypeInfo $entity_type_info, AmpContext $amp_context) {
     $this->entity_manager = $entity_manager;
     $this->renderer = $renderer;
     $this->configFactory = $configFactoryInterface;
     $this->entityTypeInfo = $entity_type_info;
+    $this->ampContext = $amp_context;
   }
 
   /**
@@ -69,7 +74,8 @@ class ampPage extends ControllerBase {
       $container->get('entity.manager'),
       $container->get('renderer'),
       $container->get('config.factory'),
-      $container->get('amp.entity_type')
+      $container->get('amp.entity_type'),
+      $container->get('router.amp_context')
     );
   }
 
@@ -104,12 +110,8 @@ class ampPage extends ControllerBase {
     $node = $this->entity_manager->getStorage('node')->load($node);
     $node_view_controller = new NodeViewController($this->entity_manager, $this->renderer);
 
-    // Get a list of content types that are AMP enabled.
-    $enabled_types = $this->entityTypeInfo->getAmpEnabledTypes();
-    $type = $node->getType();
-
     // Only use the AMP view mode for content that is AMP enabled.
-    if ($enabled_types[$type] === $type) {
+    if ($this->ampContext->isAmpRoute()) {
       $page = $node_view_controller->view($node, 'amp');
     }
     // Otherwise return the default view mode.
diff --git a/src/Routing/AmpContext.php b/src/Routing/AmpContext.php
index 805775d..5003ec8 100644
--- a/src/Routing/AmpContext.php
+++ b/src/Routing/AmpContext.php
@@ -67,9 +67,8 @@ 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 path with amp in the query string.
+    if (!(isset($_GET['amp']))) {
       return FALSE;
     }
 
