diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/common/start-with-slash/external_dataset.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/common/start-with-slash/external_dataset.000.ddl.sqlpp
new file mode 100644
index 0000000..ff5ff1e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/common/start-with-slash/external_dataset.000.ddl.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use test;
+
+drop type test if exists;
+create type test as open {
+};
+
+drop dataset test1 if exists;
+CREATE EXTERNAL DATASET test1(test) USING %adapter% (
+%template%,
+("container"="playground"),
+("definition"="/json-data/reviews/single-line/json"),
+("format"="json")
+);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
index af0ae36..ca0167b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
@@ -607,5 +607,12 @@
         <output-dir compare="Text">common/byte_order_mark/tsv</output-dir>
       </compilation-unit>
     </test-case>
+    <test-case FilePath="external-dataset">
+      <compilation-unit name="common/start-with-slash">
+        <placeholder name="adapter" value="AZUREBLOB" />
+        <output-dir compare="Text">common/start-with-slash</output-dir>
+        <expected-error>Prefix should not start with "/". Prefix: '/json-data/reviews/single-line/json'</expected-error>
+      </compilation-unit>
+    </test-case>
   </test-group>
 </test-suite>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
index 5df65ba..98a2fa7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
@@ -920,6 +920,13 @@
         <output-dir compare="Text">common/include-exclude/include-12</output-dir>
       </compilation-unit>
     </test-case>
+    <test-case FilePath="external-dataset">
+      <compilation-unit name="common/start-with-slash">
+        <placeholder name="adapter" value="S3" />
+        <output-dir compare="Text">common/start-with-slash</output-dir>
+        <expected-error>Prefix should not start with "/". Prefix: '/json-data/reviews/single-line/json'</expected-error>
+      </compilation-unit>
+    </test-case>
   </test-group>
   <test-group name="bom">
     <test-case FilePath="external-dataset">
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
index 2810399..3694bb2 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
@@ -302,6 +302,7 @@
     MINIMUM_VALUE_ALLOWED_FOR_PARAM(1197),
     DUPLICATE_FIELD_IN_PRIMARY_KEY(1198),
     INCOMPATIBLE_FIELDS_IN_PRIMARY_KEY(1199),
+    PREFIX_SHOULD_NOT_START_WITH_SLASH(1200),
 
     // Feed errors
     DATAFLOW_ILLEGAL_STATE(3001),
diff --git a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
index dd557b9..15c8831 100644
--- a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
+++ b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
@@ -304,6 +304,7 @@
 1197 = Minimum value allowed for '%1$s' is %2$s. Found %3$s
 1198 = Duplicate field '%1$s' in primary key
 1199 = Fields '%1$s' and '%2$s' are incompatible for primary key
+1200 = Prefix should not start with "/". Prefix: '%1$s'
 
 # Feed Errors
 3001 = Illegal state.
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
index e5b2c9e..104f301 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
@@ -764,11 +764,12 @@
      *
      * @param configuration configuration
      */
-    public static String getPrefix(Map<String, String> configuration) {
-        return getPrefix(configuration, true);
+    public static String getPrefix(Map<String, String> configuration) throws CompilationException {
+        return getPrefix(configuration, true, true);
     }
 
-    public static String getPrefix(Map<String, String> configuration, boolean appendSlash) {
+    public static String getPrefix(Map<String, String> configuration, boolean appendSlash, boolean failSlashAtStart)
+            throws CompilationException {
         String root = configuration.get(ExternalDataPrefix.PREFIX_ROOT_FIELD_NAME);
         String definition = configuration.get(ExternalDataConstants.DEFINITION_FIELD_NAME);
         String subPath = configuration.get(ExternalDataConstants.SUBPATH);
@@ -777,6 +778,11 @@
         boolean hasDefinition = definition != null && !definition.isEmpty();
         boolean hasSubPath = subPath != null && !subPath.isEmpty();
 
+        // prefix cannot start with a "/"
+        if (failSlashAtStart && hasDefinition && definition.startsWith("/")) {
+            throw new CompilationException(ErrorCode.PREFIX_SHOULD_NOT_START_WITH_SLASH, definition);
+        }
+
         // if computed fields are used, subpath will not take effect. we can tell if we're using a computed field or
         // not by checking if the root matches the definition or not, they never match if computed fields are used
         if (hasRoot && hasDefinition && !root.equals(definition)) {
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
index 6330db2..4860ed1 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
@@ -476,7 +476,7 @@
             ListPathsOptions listOptions = new ListPathsOptions();
             boolean recursive = Boolean.parseBoolean(configuration.get(RECURSIVE_FIELD_NAME));
             listOptions.setRecursive(recursive);
-            listOptions.setPath(getPrefix(configuration, false));
+            listOptions.setPath(getPrefix(configuration, false, false));
             PagedIterable<PathItem> pathItems = fileSystemClient.listPaths(listOptions, null);
 
             // Collect the paths to files only
