diff --git a/core/lib/Drupal/Core/Entity/EntityType.php b/core/lib/Drupal/Core/Entity/EntityType.php
index e121d75..ec33a85 100644
--- a/core/lib/Drupal/Core/Entity/EntityType.php
+++ b/core/lib/Drupal/Core/Entity/EntityType.php
@@ -10,6 +10,7 @@
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Entity\Exception\EntityTypeIdLengthException;
+use Drupal\Core\Entity\Exception\InvalidLinkTemplateException;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 
 /**
@@ -253,6 +254,16 @@ public function __construct($definition) {
       ));
     }
 
+    // All link templates must have a leading slash.
+    foreach ($definition['links'] as $link_relation_name => $link_template) {
+      if ($link_template[0] != '/') {
+        throw new InvalidLinkTemplateException(SafeMarkup::format('Link template for @relation is missing leading slash: @template.', array(
+          '@relation' => $link_relation_name,
+          '@template' => $link_template,
+        )));
+      }
+    }
+
     foreach ($definition as $property => $value) {
       $this->{$property} = $value;
     }
diff --git a/core/lib/Drupal/Core/Entity/Exception/InvalidLinkTemplateException.php b/core/lib/Drupal/Core/Entity/Exception/InvalidLinkTemplateException.php
new file mode 100644
index 0000000..f64d39f
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/Exception/InvalidLinkTemplateException.php
@@ -0,0 +1,14 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\Core\Entity\Exception\InvalidLinkTemplateException.
+ */
+
+namespace Drupal\Core\Entity\Exception;
+
+/**
+ * Indicates that a link template does not follow the required pattern.
+ */
+class InvalidLinkTemplateException extends \Exception {
+
+}
