diff --git a/menu_generator/menu.py b/menu_generator/menu.py
index 276d76e671efc97fb0d429af02821e7534c7511d..c4e54eb3161374b3254d386f1d9b9515ddb4d02c 100755
--- a/menu_generator/menu.py
+++ b/menu_generator/menu.py
@@ -2,7 +2,7 @@ import copy
 
 import django
 from django.core.exceptions import ImproperlyConfigured
-from .utils import get_callable, parse_url
+from .utils import get_callable, parse_url, path_startswith
 
 if django.VERSION >= (1, 10):  # pragma: no cover
     from django.urls import reverse, NoReverseMatch
@@ -91,14 +91,14 @@ class MenuBase(object):
         If related URLS are given, it also returns true if one of the related URLS is part of path.
         """
         url = self._get_url(item_dict)
-        if self._is_root(item_dict) and url in self.path:
+        if self._is_root(item_dict) and path_startswith(self.path, url):
             return True
         elif url == self.path:
             return True
         else:
             # Go through all related URLs and test 
             for related_url in self._get_related_urls(item_dict):
-                if related_url in self.path:
+                if path_startswith(self.path, related_url):
                     return True
         return False
 
diff --git a/menu_generator/utils.py b/menu_generator/utils.py
index e67cde828363e136354f7b550a995c663bd21b96..7329da8cf202f15c74e293191dd737c215a4d4fb 100755
--- a/menu_generator/utils.py
+++ b/menu_generator/utils.py
@@ -52,3 +52,13 @@ def parse_url(url):
     except NoReverseMatch:
         final_url = url
     return final_url
+
+
+def path_startswith(path, prefix):
+    """
+    Returns True if the leftmost path components are the same as prefix.
+    """
+    path_components = path.strip("/").split("/")
+    prefix_components = prefix.strip("/").split("/")
+
+    return path_components[:len(prefix_components)] == prefix_components