diff --git a/page_manager/plugins/tasks/node_view.inc b/page_manager/plugins/tasks/node_view.inc
index 89a2912..6b8ca6f 100644
--- a/page_manager/plugins/tasks/node_view.inc
+++ b/page_manager/plugins/tasks/node_view.inc
@@ -91,23 +91,29 @@ function page_manager_node_view_page($node) {
   // Build the full output using the configured CTools plugin.
   $output = ctools_context_handler_render($task, '', $contexts, array($node->nid));
   if ($output !== FALSE) {
+    $uri = entity_uri('node', $node);
+    // Set the node path as the canonical URL to prevent duplicate content.
+    drupal_add_html_head_link(array('rel' => 'canonical', 'href' => url($uri['path'], $uri['options'])), TRUE);
+    // Set the non-aliased path as a default shortlink.
+    drupal_add_html_head_link(array('rel' => 'shortlink', 'href' => url($uri['path'], array_merge($uri['options'], array('alias' => TRUE)))), TRUE);
     node_tag_new($node);
     return $output;
   }
 
+  // Otherwise try loading an override plugin with a node_page_view()
+  // fallback.
+  $function = 'node_page_view';
   // Try loading an override plugin.
   foreach (module_implements('page_manager_override') as $module) {
     $call = $module . '_page_manager_override';
     if (($rc = $call('node_view')) && function_exists($rc)) {
-      return $rc($node);
+      // Override page building callable.
+      $function = $rc;
+      break;
     }
   }
 
-  // Prepare the node to be displayed so all of the regular hooks are triggered.
-  $default_output = node_page_view($node);
-
-  // Otherwise, fall back to the default output generated by node_page_view().
-  return $default_output;
+  return $function($node);
 }
 
 /**
