diff --git a/amp.module b/amp.module
index a7f45f6..35d9392 100644
--- a/amp.module
+++ b/amp.module
@@ -308,13 +308,24 @@ function amp_is_amp_request() {
   $result = &drupal_static(__FUNCTION__);
 
   if (!isset($result)) {
-    // We only want to consider path with amp in the query string.
-    $result = isset($_GET['amp']);
+    $result = FALSE;
 
-    if ($result) {
-      // Only show AMP routes for content that is AMP enabled.
+    // The current request must have '?amp' in the query string.
+    if (isset($_GET['amp'])) {
+      // Ensure that there is a node loaded from the current request, and that
+      // it is a node type which has the AMP view mode enabled.
       $node = menu_get_object();
-      $result &= $node && in_array($node->type, amp_get_enabled_types());
+      if ($node && in_array($node->type, amp_get_enabled_types())) {
+        // Do an additional check to ensure the current path is actually the
+        // node's public URI. Without this check this function would return
+        // true on the node's edit form.
+        $uri = entity_uri('node', $node);
+        if ($uri['path'] == current_path()) {
+          // Only if all of the above conditions are true, is this a valid AMP
+          // request.
+          $result = TRUE;
+        }
+      }
     }
   }
 
